Activity.OnSaveInstanceState Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
OnSaveInstanceState(Bundle) |
Вызывается для получения состояния каждого экземпляра из действия, прежде чем быть убитым, чтобы состояние можно было восстановить в |
OnSaveInstanceState(Bundle, PersistableBundle) |
Это то же самое, что |
OnSaveInstanceState(Bundle)
Вызывается для получения состояния каждого экземпляра из действия, прежде чем быть убитым, чтобы состояние можно было восстановить в #onCreate
или #onRestoreInstanceState
( Bundle
заполненное этим методом будет передано обоим).
[Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Handler")]
protected virtual void OnSaveInstanceState (Android.OS.Bundle outState);
[<Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Handler")>]
abstract member OnSaveInstanceState : Android.OS.Bundle -> unit
override this.OnSaveInstanceState : Android.OS.Bundle -> unit
Параметры
- outState
- Bundle
Пакет, в котором нужно разместить сохраненное состояние.
- Атрибуты
Комментарии
Вызывается для получения состояния каждого экземпляра из действия, прежде чем быть убитым, чтобы состояние можно было восстановить в #onCreate
или #onRestoreInstanceState
( Bundle
заполненное этим методом будет передано обоим).
Этот метод вызывается до того, как действие может быть убито, чтобы при возврате некоторого времени в будущем он может восстановить свое состояние. Например, если действие B запускается перед действием A, а в какой-то момент действие А будет убито для освобождения ресурсов, действие А может сохранить текущее состояние пользовательского интерфейса с помощью этого метода, чтобы при возвращении пользователя в действие A состояние пользовательского интерфейса можно восстановить с помощью #onCreate
или #onRestoreInstanceState
.
Не путайте этот метод с обратными вызовами жизненного цикла действия, такими как #onPause
, которые всегда вызываются, когда пользователь больше не активно взаимодействует с действием или #onStop
вызывается, когда действие становится невидимым. Один из примеров, когда #onPause
и вызывается, а #onStop
не этот метод заключается в том, что пользователь переходит обратно из действия B в действие A: не требуется вызывать #onSaveInstanceState
на B, так как этот конкретный экземпляр никогда не будет восстановлен, поэтому система избегает ее вызова. Например, когда вызывается и не #onSaveInstanceState
происходит, когда #onPause
действие B запускается перед действием A: система может избежать вызова #onSaveInstanceState
действия A, если оно не убито в течение времени существования B, так как состояние пользовательского интерфейса A останется неизменным.
Реализация по умолчанию заботится о большинстве состояний пользовательского интерфейса для каждого экземпляра, вызывая android.view.View#onSaveInstanceState()
каждое представление в иерархии с идентификатором и сохраняя идентификатор текущего ориентированного представления (все из которых восстанавливается реализацией #onRestoreInstanceState
по умолчанию). Если вы переопределите этот метод, чтобы сохранить дополнительную информацию, не захваченную каждым отдельным представлением, скорее всего, потребуется вызвать реализацию по умолчанию, в противном случае будет готово сохранить все состояние каждого представления самостоятельно.
Если этот метод вызывается, этот метод будет происходить после #onStop
того, как приложения предназначены для платформ, начиная с android.os.Build.VERSION_CODES#P
. Для приложений, предназначенных для более ранних версий платформы, этот метод будет выполняться раньше #onStop
, и нет никаких гарантий о том, будет ли оно происходить до или после #onPause
.
Документация по Java для android.app.Activity.onSaveInstanceState(android.os.Bundle)
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
См. также раздел
Применяется к
OnSaveInstanceState(Bundle, PersistableBundle)
Это то же самое, что #onSaveInstanceState
и для действий, созданных с заданным атрибутом android.R.attr#persistableMode
persistAcrossReboots
.
[Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Landroid_os_PersistableBundle_Handler")]
public virtual void OnSaveInstanceState (Android.OS.Bundle outState, Android.OS.PersistableBundle outPersistentState);
[<Android.Runtime.Register("onSaveInstanceState", "(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V", "GetOnSaveInstanceState_Landroid_os_Bundle_Landroid_os_PersistableBundle_Handler")>]
abstract member OnSaveInstanceState : Android.OS.Bundle * Android.OS.PersistableBundle -> unit
override this.OnSaveInstanceState : Android.OS.Bundle * Android.OS.PersistableBundle -> unit
Параметры
- outState
- Bundle
Пакет, в котором нужно разместить сохраненное состояние.
- outPersistentState
- PersistableBundle
Состояние, которое будет сохранено во время перезагрузки.
- Атрибуты
Комментарии
Это то же самое, что #onSaveInstanceState
и для действий, созданных с заданным атрибутом android.R.attr#persistableMode
persistAcrossReboots
. Переданный android.os.PersistableBundle
файл будет сохранен и представлен в #onCreate(Bundle, PersistableBundle)
первый раз, когда это действие будет перезапущено после следующей перезагрузки устройства.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
См. также раздел
- OnSaveInstanceState(Bundle)
- OnCreate(Bundle)
- <xref:Android.App.Activity.OnRestoreInstanceState(Android.OS.Bundle%2c+Android.OS.PersistableBundle)>
- OnPause()