Подтвердить что ты не робот

Когда действительно используется пакет savedInstanceState?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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