4

setRetainInstance()状態を使用または保存する必要があるのはなぜですか。同じ「保存状態の非UI状態」onSaveInstance()を使用android:configChanges="keyboard|orientation|screenLayout"して取得できますか?つまり、頭痛が少ないということです。

4

1 に答える 1

7

使用しないでくださいandroid:configChanges。それは微妙な方法で物事を壊し、Androidが現在の構成に対して適切なレイアウト/テーマ/寸法などを取得するのを妨げます。

onSaveInstanceState()これとは完全に直交しています。Androidがメモリを節約するためにプロセスを強制終了した場合に復元できるように、状態を保存する必要があります。configChagnes回転、キーボードの状態の変化などでアクティビティを再作成できないようにするだけです。

setRetainInstance()デバイスのローテーションなどで再作成したくないフラグメント用です。呼び出さない場合、Androidはそれらの状態をバンドルでシリアル化し、親アクティビティとともに再作成します。

要するに、configChanges「ショートカット」のように見えますが、そうではありません。それに依存せず、それぞれの場合に適切なツールを使用して、必要に応じて状態を保存/復元します。

于 2012-08-06T03:51:21.503 に答える