На следующем рисунке (из официального документа ) описывается хорошо известный жизненный цикл активности Android:
С другой стороны, когда действие уничтожается системой (например, из-за того, что необходимо освободить память), состояние действия иногда автоматически сохраняется и восстанавливается с помощью методов onSaveInstanceState()
и onRestoreInstanceState()
, как показано на следующем рисунке (также из официального документа ):
Я знаю, что onSaveInstanceState()
это не всегда вызывается, когда активность вот-вот будет уничтожена. Например, если он уничтожен, потому что пользователь нажал кнопку «назад», состояние активности не сохраняется. Но в тех случаях , когда состояние будет сохранено и восстановлено, и onSaveInstanceState()
/ onRestoreInstanceState()
дозвонились, когда именно они называются ?
Например, согласно приведенным выше рисункам, onRestoreInstanceState()
может вызываться до onStart()
или после, onStart()
но до onResume()
или после onResume()
. Точно так же существует несколько возможностей для onSaveInstanceState()
. Так когда именно они называются?
В идеале я бы хотел видеть комбинированную диаграмму, показывающую состояния жизненного цикла активности и методы сохранения / восстановления , если они существуют.
источник
Ответы:
Согласно документации :
источник
Согласно doc1 и doc2
источник
В дополнение к уже опубликованным ответам в Android P внесено небольшое изменение, а именно:
Источник: документы
Относительно того, почему вводится это изменение, вот ответ:
Источник: документы
источник
Do you know how will behave app that target P but runs on lower api?
пока приложение работает, скажем, на M, версия Android, которая есть на этом устройстве, не содержит изменений, представленных в P, что означает, что независимо от того, что вы указали цель,P
вы не увидите отличается для устройств pre-P. Надеюсь, что это ответ на ваш вопрос.Это дополнительная информация для onSaveInstanceState (Bundle)
из документов
Так что это реализация по умолчанию для ..
источник
// Этот обратный вызов вызывается только в том случае, если есть сохраненный экземпляр, ранее сохраненный с помощью // onSaveInstanceState (). Мы восстанавливаем какое-то состояние в onCreate (), в то время как мы можем при желании восстановить // другое состояние здесь, возможно, используемое после завершения onStart (). // Пакет savedInstanceState такой же, как тот, который используется в onCreate ().
источник