Когда на самом деле используется комплект saveInstanceState? - PullRequest
25 голосов
/ 24 марта 2012

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

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

Какие еще случаи существуют?

Чтобы быть понятным, под словом "used" я подразумеваю, когда вызывается onCreate(), комплект saveInstanceState не равен нулю и содержит данные, которые я передал в него при последнем вызове onSaveInstanceState().

Ответы [ 2 ]

39 голосов
/ 24 марта 2012

Используется, когда действие принудительно завершается операционной системой (например, когда ваша активность находится в фоновом режиме, а другая задача требует ресурсов).Когда это произойдет, будет вызван onSaveInstanceState(Bundle outstate), и ваше приложение добавит любые данные о состоянии, которые вы хотите сохранить в outstate.

Когда пользователь возобновит вашу активность, будет вызван onCreate(Bundle savedInstanceState) и savedInstanceState будет ненулевым, если ваша деятельность была прервана в сценарии, описанном выше.Затем ваше приложение может получить данные из savedInstanceState и восстановить состояние вашей активности до состояния, в котором он был в последний раз.

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

20 голосов
/ 24 марта 2012

onSaveInstanceState используется для хранения данных только для времени жизни приложения (т.е. временно)

Данные хранятся в памяти только до тех пор, пока приложение не будет активным, другими словами, эти данные будут потеряны при закрытии приложения, поэтому в вашем случае, когда вы принудительно закрываете приложение, onSaveInstanceState не используется.

Его можно вызвать, только когда вы выполняете операции, когда ваше приложение еще живо, например, когда вы изменяете ориентацию экрана, активность все еще остается неизменной, поэтому вызывается onSaveInstanceState.

Однако, если вы хотите сохранить данные на постоянной основе, вам придется использовать SharedPreferences и SQLite database.

...