1. ホーム
  2. android

[解決済み] onSaveInstanceState()とonRestoreInstanceState()は一体いつ呼び出されるのですか?

2022-10-01 08:57:47

質問

次の図( 公式ドキュメント より) は、よく知られた ライフサイクル を記述しています。

一方、アクティビティがシステムによって破棄される場合(例えばメモリの再利用が必要なため)、アクティビティの状態は、時には自動的に 保存され、復元されます。 メソッドによって onSaveInstanceState()onRestoreInstanceState() というように、次の図(同じく 公式ドキュメント ):

私が知っているのは onSaveInstanceState() と呼ばれるとは限りません。 は、アクティビティが破壊されようとしているときに呼び出されるとは限りません。例えば、ユーザーが"back"ボタンを押したために破壊される場合、アクティビティの状態は保存されません。しかし、状態 が保存され、復元され onSaveInstanceState() / onRestoreInstanceState() と呼ばれるようになる。 いつ呼ばれるのか ?

例えば、上の図によると onRestoreInstanceState() が呼び出される前に onStart() の前、あるいは後に onStart() の前に onResume() の後、または onResume() . 同様に、いくつかの可能性が onSaveInstanceState() . では、これらは具体的にいつ呼ばれるのでしょうか?

理想を言えば、私が欲しいのは アクティビティーのライフサイクルの状態とセーブ/リストアメソッドを示す結合図 というもので、もしそれが存在するならば。

どのように解決するのですか?

について ドキュメント :

void onRestoreInstanceState (Bundle savedInstanceState)

このメソッドは onStart()onPostCreate(Bundle) .

void onSaveInstanceState (Bundle outState)

呼び出された場合、このメソッドは Build.VERSION_CODES.P で始まるプラットフォームを対象とするアプリケーションの onStop() の後に発生します。以前のプラットフォームのバージョンを対象とするアプリケーションでは、このメソッドは onStop() の前に発生し、 onPause() の前か後かについての保証はありません。