Activity.OnRetainNonConfigurationInstance Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.