Должен ли я восстановить savedinstancestate в onCreate или inRestoreInstanceState?

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

Я переопределил onSaveInstanceState, чтобы добавить данные, которые необходимо сохранить и восстановить.

Когда действие уничтожается и воссоздается, onCreate передается пакет savedInstanceState; но и onRestoreInstanceState() вызывается и передает тот же комплект.

Итак, где я должен поместить код, который извлекает данные из пакета и восстанавливает состояние? В onCreate или inRestoreInstanceState? Является ли последнее гарантированным всегда называемым?

Возможно ли, что onRestoreInstanceState вызывается без вызова onCreate? (например, если активность прекращается и перезапускается, но не уничтожается и воссоздается)?

Ответы

Ответ 1

"Вместо восстановления состояния во время onCreate() вы можете выбрать реализацию onRestoreInstanceState(), которую система вызывает после метода onStart(). Система вызывает onRestoreInstanceState(), только если есть восстановленное состояние для восстановления, поэтому вам не нужно проверять, является ли Bundle NULL"

следующая ссылка достаточно ясно объясняет активность перезапуска.

Руководство для Android

Ответ 2

Метод onRestoreInstanceState() вызывается Android между методами жизненного цикла onStart() и onResume(). Таким образом, чтобы восстановить состояние вашей активности, просто реализуйте состояние активности восстановления onRestoreInstanceState().