Поделиться через


Activity.OnRetainNonConfigurationInstance Метод

Определение

Вызывается системой в рамках уничтожения действия из-за изменения конфигурации, когда известно, что новый экземпляр будет немедленно создан для новой конфигурации.

[Android.Runtime.Register("onRetainNonConfigurationInstance", "()Ljava/lang/Object;", "GetOnRetainNonConfigurationInstanceHandler")]
public virtual Java.Lang.Object? OnRetainNonConfigurationInstance ();
[<Android.Runtime.Register("onRetainNonConfigurationInstance", "()Ljava/lang/Object;", "GetOnRetainNonConfigurationInstanceHandler")>]
abstract member OnRetainNonConfigurationInstance : unit -> Java.Lang.Object
override this.OnRetainNonConfigurationInstance : unit -> Java.Lang.Object

Возвращаемое значение

любой объект, содержащий требуемое состояние для распространения в следующий экземпляр действия

Атрибуты

Комментарии

Вызывается системой в рамках уничтожения действия из-за изменения конфигурации, когда известно, что новый экземпляр будет немедленно создан для новой конфигурации. Вы можете вернуть любой объект, который вам нравится здесь, включая сам экземпляр действия, который позже можно получить путем вызова #getLastNonConfigurationInstance() в новом экземпляре действия.

<Em>, если вы нацелены android.os.Build.VERSION_CODES#HONEYCOMB или более поздние версии, рассмотрите возможность использования Fragment с Fragment#setRetainInstance(boolean) Fragment.setRetainInstance(boolean.</эм>

Эта функция называется исключительно оптимизацией, и ее не следует полагаться на вызываемую функцию. При вызове функции будут сделаны ряд гарантий для оптимизации переключения конфигурации: <ul><li> Функция будет вызываться между #onStop и #onDestroy. <li> Новый экземпляр действия всегда< и em> будет <>создан сразу после вызова этого #onDestroy() действия. В частности, <сообщения em no</em>> будут отправляться в это время (если возвращенный объект не имеет действия, с которыми будет связана операция). <li> Возвращаемый здесь объект всегда<<>/em> будет доступен из #getLastNonConfigurationInstance() метода следующего экземпляра действия, как описано здесь. </ul>

Эти гарантии предназначены для распространения обширного состояния от старого к новому экземпляру действия от загруженных растровых карт до сетевых подключений к равномерному выполнению потоков. Обратите внимание, что вы не<> должны <>распространять любые данные, которые могут изменяться на основе конфигурации, включая любые данные, загруженные из ресурсов, таких как строки, макеты или рисуемые.

Гарантия отсутствия обработки сообщений во время перехода на следующее действие упрощает использование с активными объектами. Например, если сохраненное состояние является android.os.AsyncTask вы гарантируете, что его функции обратного вызова (например android.os.AsyncTask#onPostExecute), не будут вызываться из вызова здесь, пока не будет выполнен следующий экземпляр #onCreate(Bundle). (Обратите внимание, что, конечно, нет такой гарантии android.os.AsyncTask#doInBackground , так как это выполняется в отдельном потоке.)

<strong>Note:</strong> Для большинства случаев следует использовать Fragment API Fragment#setRetainInstance(boolean) . Это также доступно на старых платформах через библиотеки поддержки Android.

Документация по Java для android.app.Activity.onRetainNonConfigurationInstance().

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к