最近Activityのライフサイクルを見直し、関連書籍や公式ドキュメントを読んで得たことが多く、以前の理解が大きく深まったのでここで共有したいと思います。
アクティビティはサーブレットに相当します。アクティビティはこのコンテナ内にあります。インスタンスの作成、初期化、インスタンスの破棄などのすべてのプロセスはコンテナによって呼び出されます。いわゆる「電話しないでください、私が電話します。」メカニズム。 (推奨される学習: Java ビデオ チュートリアル )
この古典的なライフサイクル フローチャートを見てみましょう:
onCreate():
このメソッドは、アクティビティの作成時に自動的に実行されます。このメソッドは、ビューの作成、リストへのデータの設定など、いくつかの初期化アクションを実行します。このメソッドは、アクティビティの以前のステータス情報を含むバンドル タイプ変数を提供します (この情報が以前に保存されている場合)。このメソッドが実行された後、onStart() メソッドが実行されます。finish() メソッドが onCreate メソッドに追加された場合、onCreate は onDestroy メソッド
#onRestart():# を実行します。 ## アクティビティが onStop 状態から復帰するとき、onRestart メソッドが使用されます。このメソッドは、再度実行される onStart よりも優先されます。OnStart は、onRestart の完了後に実行されます。 finish() ステートメントを onRestart() メソッドに追加すると、onStart と後続の state メソッドは、onDestroy の実行が終了するまで実行され続けます。
onStart():アクティビティが終了するまで、ユーザーが表示されると onStart が呼び出されます。アクティビティがフォアグラウンドで表示されると、onResume が実行されます。アクティビティがフォアグラウンドで表示される前に非表示 (停止) になると、onStop() が実行されます。たとえば、の場合、onStart メソッドでfinish() メソッドが使用されている場合、onStop->onDestroy は onStart() の直後に実行されます。
onResume():onResume は、アクティビティがユーザーとの対話を開始し、アクティビティがユーザー操作のアクティビティ スタックの最上位にあるときに呼び出されます。特定の操作の後、メソッドの実行後に実行されるのは onPause()
onPause():アクティビティが onResume メソッドに実行されるとき、アクティビティがこのメソッドは、一時停止するか停止するかに関係なく呼び出されます。このメソッドの後に onResume または onStop を続けることができます。このアクティビティ A を完全にカバーしていない新しいアクティビティ B がこのアクティビティ A で開かれた場合、アクティビティ A は onPause 状態になります。アクティビティ B が終了すると、 activity-A は、onResume を直接実行します (onPause メソッドが実行されている場合、そうでない場合は、onPause メソッドが実行されるのを待ってから onResume メソッドを実行するため、このメソッドで CPU を集中的に使用する操作を実行することはお勧めできません)。アクティビティ A を終了する必要がある場合は、次に onStop が実行されます。 onPause() は、変更された未保存の永続データを送信し、より多くの CPU を消費するアニメーションやその他のイベント (放送受信機、センサー (GPS など)、または電力を消費するリソースなど) を停止するために使用されます。更新のOK、新しいアクティビティを実行します。
onStop():このアクティビティが完全に非表示になると、onStop メソッドが呼び出されます。これは、別のアクティビティが onResume を呼び出してこれを上書きするためです。活動 。このアクティビティが onStop() メソッドを呼び出すのは、次の 3 つの状況です。1 つ目は、新しいアクティビティが実行される場合、2 つ目は、既存のアクティビティが前面に切り替わる場合、3 つ目は、アクティビティが破棄される場合です。アクティビティがユーザーによって呼び戻された場合は、onRestart メソッドが呼び出されます。アクティビティが破棄される場合は、その前に onDestroy メソッド
onDestroy(): が呼び出されます。たとえば、次のような状況が発生した場合: アクティビティがfinish() メソッドを呼び出してアクティビティを終了する場合、またはシステムがスペースを節約するためにアクティビティを一時的に破棄する場合、これら 2 つの状況は isFinishing() によって判断できます。メソッド
Java 開発チュートリアル 列にアクセスして学習してください。
以上がアクティビティのライフサイクルメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。