私のアクティビティでは、次のアクティビティに移動したときにsaveInstanceStateが呼び出されます(例:アクティビティAがアクティビティBを開始し、アクティビティAのsaveInstanceStateが呼び出されます)-これは通常の動作ですか?私が理解している限り(ドキュメントから)、OSがリソースを再利用するためにプロセスをシャットダウンするとsaveInstanceStateが呼び出されます。
3 に答える
私が理解している限り(ドキュメントから)、OSがリソースを再利用するためにプロセスをシャットダウンするとsaveInstanceStateが呼び出されます。
いいえ。Androidがアクティビティを破棄したいが、そのアクティビティを再作成して、破棄されたことがないように見せたい場合は、アクティビティの移行時に呼び出されます。一般的なケースは構成の変更(画面の回転など)ですが、他のケースでも発生します。
特に、Androidは「OSがリソースを再利用するプロセスをシャットダウンする」まで待つことができません。それまでに、Androidはそれらのリソースを取得するために深刻な急いでいる可能性があるためです。
アクティビティが画面から消えるたびに、状態はさらに表示するために保存されます。画面の向きを変更するとします。ご存知かもしれませんが、これが発生すると、ビューは完全に再作成されます。物事の状態を維持するためにAndroidがそれを行う方法は、破棄して再作成する前に状態を保存することです。
onPause()
頻繁に呼び出されます...
onPause()
アクティビティがバックグラウンドに入るときに、アクティビティライフサイクルの一部として呼び出されます。
saveinstancestate()
onCreate(Bundle)またはonRestoreInstanceState(Bundle)で状態を復元できるように、強制終了される前にアクティビティからインスタンスごとの状態を取得するために呼び出されます(このメソッドによって入力されたバンドルは両方に渡されます)。