Подтвердить что ты не робот

Когда ВСЕ, когда вызывается метод onSaveInstanceState()?

Все источники, которые я прочитал, упомянули обо всех случаях и заключили "несколько других случаев". Каковы ВСЕ случаи, когда метод onSaveInstanceState вызывается в представлении/активности?

4b9b3361

Ответ 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.