Все источники, которые я прочитал, упомянули обо всех случаях и заключили "несколько других случаев". Каковы ВСЕ случаи, когда метод onSaveInstanceState вызывается в представлении/активности?
Когда ВСЕ, когда вызывается метод onSaveInstanceState()?
Ответ 1
doc говорит
Этот метод вызывается до того, как действие может быть убито, так что, когда он вернется через некоторое время в будущем, он сможет восстановить свое состояние.
Ответ 2
Всякий раз, когда происходит мягкое уничтожение активности. I.e, когда меняется ориентация или когда процесс убит андроидом из-за низкой памяти.
Он не вызывается, когда пользователь сознательно просто перемещается в сторону от активности.
Обратитесь к этой ссылке: https://sites.google.com/site/jalcomputing/home/mac-osx-android-programming-tutorial/saving-instance-state
Ответ 3
onSaveInstanceState() будет вызываться по умолчанию для представления, если он имеет идентификатор.
google сказал: "Реализация по умолчанию заботится о большинстве состояний пользовательского интерфейса для каждого экземпляра, вызывая onSaveInstanceState() для каждого представления в иерархии с идентификатором.
Подробнее здесь.
Ответ 4
Также имейте в виду, что onSaveInstanceState
можно вызвать по фрагменту непосредственно после onCreate
(onCreateView
, onActivityCreated
, onStart
и onResume
НЕ будет вызываться), если фрагмент присоединен к активность, но не показана, затем уничтожается. Таким образом, вы должны быть уверены, что все, что вы указали в onSaveInstanceState
, инициализируется в onCreate
, иначе вы рискуете a NullPointerException
.
Ответ 5
- onSaveInstanceState() вызывается при изменении ориентации или пользователь нажимает кнопку "домой".
- Если есть другая деятельность перед активности и ОС убивает скрытую деятельность, чтобы освободить (или когда требуется память в другом месте), тогда вызывается onSaveInstanceState(), так что активность может сохранять информацию о состоянии, которая восстанавливается с помощью onRestoreInstanceState(), когда пользователь запускает это действие в следующий раз.
- Стандартные представления Android сохраняют свое состояние посредством вызова View.onSaveInstanceState, который восстанавливается по умолчанию для onRestoreInstanceState
По doc
Если пользователь взаимодействует с активностью и нажимает кнопку "Назад" или если вызывается метод finish() операции, то эта активность удаляется из текущего стека активности и перерабатывается. В этом случае нет состояния экземпляра для сохранения и onSaveInstanceState() метод не вызывается.
Если пользователь взаимодействует с активностью и нажимает кнопку "Домой", состояние экземпляра активности должно быть сохранено. OnSaveInstanceState() метод. Если пользователь перезапустит приложение, он возобновится или перезапустить последнее запущенное действие. Если он перезапустит действие предоставляет пакет с данными сохранения в onRestoreInstanceState() и onCreate().
Если вы переопределите onSaveInstanceState() и onRestoreInstanceState(), вы должен вызвать супер-реализацию, поскольку представления по умолчанию Android хранят свои данные по вызову View.onSaveInstanceState из метода onSaveInstanceState(). Например EditText сохраняет свой контент с помощью вызова по умолчанию этого метода.
Ответ 6
Этот метод не вызывал, когда пользователь нажимает кнопку "вернуться", это один из тех случаев.
Ответ 7
onSaveInstanceState вызывается, когда когда-либо активность выходит из вложения. Например, когда вы нажимаете домашний ключ, вызывается onSaveInstanceState.