Метод 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().

Другие вопросы по тегам