onRestoreInstanceState()
называется только при воссоздании активности после того, как он был убит ОС. Такая ситуация происходит, когда:
- ориентация устройства меняется (ваша деятельность будет уничтожен и воссоздан)
- есть другая деятельность перед вашими, и в какой-то момент операционная система убивает вашу деятельность, чтобы освободить память (например). В следующий раз, когда вы начнете свою деятельность, вызывается
onRestoreInstanceState()
.
В отличие: если вы находитесь в вашей деятельности, и вы нажмете Back
кнопку на устройстве, ваша деятельность послевкусие() ред (т.е. думать о нем, как выход настольного приложения) и в следующий раз при запуске приложения оно начал «свежий», то есть без сохранения состояния, потому что вы намеренно вышли из него, когда вы нажмете Back
.
Другой источник недоразумений заключается в том, Это случай, описанный в исходном вопросе, т. Е. Если ваша активность НЕ была убита в период, когда другая деятельность была впереди, onRestoreInstanceState()
НЕ будет вызываться, потому что ваша деятельность в значительной степени «живая».
В целом, как указано в документации для onRestoreInstanceState()
:
Большинство реализаций будет просто использовать OnCreate (Bundle), чтобы восстановить их состояние, но иногда удобно сделать это здесь после того, как все из была выполнена инициализация или разрешить подклассам решать, использовать ли значение для реализации по умолчанию.Реализация по умолчанию этого метода выполняет восстановление любого состояния представления, которое ранее было , замерзаемое onSaveInstanceState (Bundle).
Как я прочитал: Там нет причин, чтобы отменить onRestoreInstanceState()
если вы не подклассов Activity
, и ожидается, что кто-то будет подклассы ваш подкласс.
Я знаю, что это довольно старая нить, но я подумал, что это может помочь кому-то luking для более информативной статьи о штатах Android, которые действительно запутывают. Вот ссылка: http://www.eigo.co.uk/Managing-State-in-an-Android-Activity.aspx –
@Nitin: спасибо, что поделились ссылкой ... это прояснило мне несколько вещей +1 – Taliadon