0


アクティビティの停止と再開に関する このチュートリアルhttp://developer.android.com/training/basics/activity-lifecycle/stopping.htmlを読んでいて、疑問に思いました。テキストには次のように書かれています。

アクティビティが停止すると、Activity オブジェクトはメモリに常駐し、アクティビティが再開されると呼び出されます。Resumed 状態に至るコールバック メソッドの実行中に作成されたコンポーネントを再初期化する必要はありません。

以降:

アプリがアクティビティの状態を復元するために onRestart() を使用する必要があることはめったにないため、アプリの一般的な母集団に適用されるこのメソッドのガイドラインはありません。ただし、 onStop() メソッドは基本的にすべてのアクティビティのリソースをクリーンアップする必要があるため、アクティビティが再開したときにそれらを再インスタンス化する必要があります。ただし、アクティビティが初めて作成されたとき (アクティビティの既存のインスタンスがないとき) にもそれらをインスタンス化する必要があります。このため、通常は onStart() コールバック メソッドを onStop() メソッドに対応するものとして使用する必要があります。これは、システムがアクティビティを作成するときと停止状態からアクティビティを再開するときに onStart() を呼び出すためです。

onCreate() および onStart() メソッドで何かのインスタンスを作成する場合、最初の段落で述べられていることに従って、それらを再初期化する必要はありません。ここでは明らかですが、からの移行を行う場合停止状態から再開状態にするには、onStart() メソッドに出くわす必要がありますが、ここで何かのインスタンスを作成すると、再び作成されます! じゃあどうすればいいの?

4

1 に答える 1

0

onStart() 中にインスタンスを再初期化したくないので、onCreate() 中に初期化するだけで、再開から単純に状態を保存したい場合はこれを使用します。ただし、より永続的なデータを保存するには、SharedPreferences、SQLite データベース、またはファイルなどを使用する必要があります。

于 2013-06-10T18:14:18.443 に答える