Compartilhar via


Activity.OnRetainNonConfigurationInstance Método

Definição

Chamado pelo sistema, como parte da destruição de uma atividade devido a uma alteração de configuração, quando se sabe que uma nova instância será imediatamente criada para a nova configuração.

[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

Retornos

qualquer Object que mantenha o estado desejado para propagar para a próxima instância de atividade

Atributos

Comentários

Chamado pelo sistema, como parte da destruição de uma atividade devido a uma alteração de configuração, quando se sabe que uma nova instância será imediatamente criada para a nova configuração. Você pode retornar qualquer objeto que desejar aqui, incluindo a própria instância de atividade, que pode ser recuperada posteriormente chamando #getLastNonConfigurationInstance() a nova instância de atividade.

<em>Se você estiver segmentando android.os.Build.VERSION_CODES#HONEYCOMB ou mais tarde, considere usar um Fragment com Fragment#setRetainInstance(boolean) Fragment.setRetainInstance(boolean.</eme>

Essa função é chamada puramente como uma otimização, e você não deve confiar que ela seja chamada. Quando ele é chamado, uma série de garantias serão feitas para ajudar a otimizar a comutação de configuração: <ul<>li> A função será chamada entre #onStop e #onDestroy. <li> Uma nova instância da atividade será <criada>imediatamente<> após a chamada desta#onDestroy(). Em particular, <as mensagens em>no</em> serão despachadas durante esse tempo (quando o objeto retornado não tiver uma atividade a ser associada). <li> O objeto que você retornar aqui estará <sempre<>> disponível no #getLastNonConfigurationInstance() método da instância de atividade a seguir, conforme descrito lá. </ul>

Essas garantias são projetadas para que uma atividade possa usar essa API para propagar o estado extensivo da instância de atividade antiga para a nova, de bitmaps carregados a conexões de rede e threads em execução ativa uniforme. Observe que você não deve <propagar><> quaisquer dados que possam ser alterados com base na configuração, incluindo quaisquer dados carregados de recursos como cadeias de caracteres, layouts ou desenhos.

A garantia de não manipulação de mensagens durante a mudança para a próxima atividade simplifica o uso com objetos ativos. Por exemplo, se seu estado retido for um android.os.AsyncTask , você tem a garantia de que suas funções de retorno de chamada (como android.os.AsyncTask#onPostExecute) não serão chamadas da chamada aqui até que você execute o #onCreate(Bundle)arquivo . (Note, no entanto, que não há, é claro, essa garantia para android.os.AsyncTask#doInBackground uma vez que está sendo executado em um thread separado.)

<forte>Nota:/strong> Para a maioria dos casos, você deve usar a Fragment APIFragment#setRetainInstance(boolean),< que também está disponível em plataformas mais antigas por meio das bibliotecas de suporte do Android.

Documentação Java para android.app.Activity.onRetainNonConfigurationInstance().

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a