Сохранение состояния приложения Android - PullRequest
4 голосов
/ 11 января 2010

Я понимаю, как сохранить состояние приложения с помощью SharedPreferences, onSavedInstanceState () и onRestoreInstanceState () и т. Д., Как описано в аналогичном посте ( Сохранение состояния активности Android с помощью Save Instance State ), но как это сделать Я сохраняю последнее действие?

Если говорить точнее, мое приложение запускается и переходит на экран входа в систему. Когда пользователь входит в систему и перемещается по нескольким действиям, скажем, он или она покидает приложение с помощью кнопки «Домой» или другим способом. В следующий раз, когда пользователь запустит приложение, оно вернется к экрану входа и снова войдет в систему. Вместо этого я хочу, чтобы приложение запускалось и переходило к последнему действию, которое было на вершине стека, когда пользователь покинул приложение в предыдущем сеансе.

Как сохраняется последнее действие, чтобы его можно было восстановить при запуске приложения?

Ответы [ 3 ]

2 голосов
/ 27 августа 2010

Мой коллега написал статью о состоянии приложения Android, включая подробности о getLastNonConfigurationInstance (), которая возвращает экземпляр, который был сохранен последним. Посмотрите здесь: http://www.eigo.co.uk/Managing-State-in-an-Android-Activity.aspx

2 голосов
/ 11 января 2010

Я считаю, что Android делает это автоматически. У нас есть приложение, над которым мы работаем. Когда я нажимаю кнопку «Домой» и они возвращаются в приложение, оно запускается в той активности, где я остановился. Мы не написали никакого кода, чтобы это произошло. Кажется, это работает.

1 голос
/ 11 января 2010

Обратите внимание, что приведенный выше ответ верен только в одном случае: если ваш процесс не будет уничтожен Android, потому что ресурсы (память, ...) необходимы по другой причине.

Чтобы получить то, что вы описываете, я написал бы пользовательское родительское действие и переопределил правильные методы жизненного цикла, чтобы сохранить состояние вашего приложения, прочитать его и действовать соответствующим образом. Затем пусть все ваши действия наследуются от MyActivity (вместо android.app.Activity)


public MyActivity extends android.app.Activity {
...
@Override
public onCreate(...) {
  // Read the Application state, 
  // check if the currently launching Activity is the right one, 
  // if not, start the last Activity and finish the current one.
}

@Override
public onDestroy(...) {
  // Store the current Activity ID in the SharedPreferences
}
...
}

Позаботьтесь о том, чтобы вызывать методы super.onDestroy и super.onCreate во всех ваших Activites (как вы должны делать в любом случае).

Приятного кодирования и веселья с Android!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...