Метод onSaveInstanceState(Bundle) вызывается после onPause()?
Я новичок в Android, и я прочитал книгу для начинающих, которая сказала, что onSaveInstanceState(Bundle)
вызывается до того, как система восстановит ваш Activity
, Я попробовал это на некоторых тестовых кодах и нашел это неправильным. я нашел это onSaveInstanceState(Bundle)
звонили каждый раз после onPause()
назывался. И это не имеет ничего общего с системой рекультивации. Я не очень уверен в этом, так что вот в чем вопрос: когда onSaveInstanceState(Bundle)
называется на самом деле?
2 ответа
Согласно документации Android:
Кроме того, метод
onSaveInstanceState(Bundle)
вызывается перед переводом действия в такое фоновое состояние, что позволяет вам сохранить любое динамическое состояние экземпляра в вашей активности в данный Bundle для последующего получения вonCreate(Bundle)
если деятельность должна быть воссоздана. См. Раздел "Жизненный цикл процесса" для получения дополнительной информации о том, как жизненный цикл процесса связан с действиями, которые он выполняет. Обратите внимание, что важно сохранить постоянные данные вonPause()
вместоonSaveInstanceState(Bundle)
потому что последний не является частью обратных вызовов жизненного цикла, поэтому не будет вызываться в каждой ситуации, как описано в его документации.
да onPause()
называется раньше onSaveInstanceState(Bundle)
, Но onPause()
гарантированно будет называться его частью жизненного цикла деятельности
Обычно, когда ваша деятельность воссоздается, например, когда вы меняете ориентацию устройства, onSaveInstanceState(Bundle)
вызывается, если вы не указали android:configChanges
тег в вашем manifest.xml
файл.
Я не согласен с предыдущим ответом.
Согласно документации:
Если вызван, этот метод будет происходить до onStop(). Нет никаких гарантий относительно того, произойдет ли это до или после onPause().