Что лучше для моих нужд, onPause () или onSaveInstanceState ()? - PullRequest
2 голосов
/ 28 июня 2011

У меня есть приложение, которое имеет три страницы, одна из которых является главной страницей. пользователь может ввести несколько полей, которые я хотел бы сохранить, если пользователь перейдет на одну из двух подстраниц. я смотрел в onPause () и в onSaveInstanceState (). Я думаю, я просто хочу получить четкое объяснение двух, и если onPause () лучше и пример кода. это то, что я для onSaveInstanceState ().

protected void onSaveInstanceState(Bundle outState) {
    // Save away the original text, so we still have it if the activity
    // needs to be killed while paused.

    outState.putDouble("quizPts",qpts);
    outState.putDouble("quizV",qvalue);
    outState.putDouble("tPts",tpts);
    outState.putDouble("tValue", tvalue);
    outState.putDouble("hPts", hpts);

так вот как я настраиваю пакет, присвоив ему идентификатор и значение.

public void onRestoreInstanceState(Bundle outState) {
  super.onRestoreInstanceState(outState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  qpts = outState.getDouble("quizPts");
  qvalue = outState.getDouble("quizV");
  tpts = outState.getDouble("tPts");
  tvalue = outState.getDouble("tValue");
  hpts = outState.getDouble("hPts");

это то, как я планирую восстановить его, проблема в том, что я не понимаю, как передать Bundle вокруг, чтобы восстановить его. Я устанавливаю переменные, которые мне нужны, чтобы вернуться к переменным, которые установлены в пользовательском интерфейсе.

любой совет был бы замечательным

спасибо от новичка androider

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Лучшим вариантом будет общее предпочтение.Onpause предназначен для решения ваших проблем, когда приложение приостановлено из-за телефонного звонка или чего-то еще.Но если вы используете разделяемое предпочтение, оно дает вам способ сохранить ваши данные и восстановить их со значениями по умолчанию, если сохраненное значение недоступно.Эти данные будут сохраняться в течение сеансов пользователя (даже если ваше приложение будет убито).Но это не очень хороший вариант, если вы планируете сохранить что-то, кроме примитивных типов данных, таких как bool, int и т. Д.

см. http://developer.android.com/guide/topics/data/data-storage.html#pref

0 голосов
/ 28 июня 2011

Вам не нужно передавать пакет вокруг себя: об этом позаботится структура Activity.Используйте onSaveInstanceState(): если ваш класс Activity по какой-либо причине уничтожен системой, он будет вызван, так что вы должны хорошо разместить свою логику там.onPause всегда будет вызываться, если вы покинете свою активность, независимо от того, уничтожена ли активность.

Я бы также добавил чек в вашу onRestoreInstanceState:

public void onRestoreInstanceState(Bundle outState) {
  super.onRestoreInstanceState(outState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  if(outState.containsKey("quizPts")) qpts = outState.getDouble("quizPts");
  if(outState.containsKey("quizV")) qvalue = outState.getDouble("quizV");
  if(outState.containsKey("tPts")) tpts = outState.getDouble("tPts");
  if(outState.containsKey("tValue")) tvalue = outState.getDouble("tValue");
  if(outState.containsKey("hPts")) hpts = outState.getDouble("hPts");
...