推奨チュートリアル: Android チュートリアル
この記事では、アクティビティについて簡単に紹介します。ライフサイクル、コンテンツは主に公式ドキュメントから取得されます。
各ライフサイクルメソッドを簡単に説明する前に、全体的な概要を説明します。アクティビティのライフ サイクルは 3 つのレベルから監視できます。
完全なライフ サイクル: 完全なライフ サイクルは、onCreate メソッドのコールバックで始まり、onDestroy メソッドのコールバックで終わります。
表示されるサイクル:表示されるサイクルが開始されます onStart メソッドのコールバックから開始され、onStop メソッドのコールバックで終了します
フォアグラウンド サイクル: フォアグラウンド サイクルは、onResume メソッドのコールバックから開始され、onPause メソッドのコールバックで終了します
##以下は簡単な紹介です。各ライフ サイクル メソッドを見てみましょう:
onCreate ライフ サイクルの最初のメソッド は、アクティビティが作成中 (開始中) です。特記事項: このメソッド内で終了メソッドを呼び出すと、onDestroy コールバックがすぐにトリガーされ、他のライフサイクルは実行されません。
onRestart このメソッドがトリガーされる前提条件 : onStop メソッドが呼び出されます。 onStop メソッドは、アクティビティが非表示になってから再び表示されるようになったときに呼び出されます。このメソッドがコールバックされた後、システムは onStart メソッドと onResume メソッドを順番にトリガーします。
onStart アクティビティが表示されているときに呼び出されます (この時点ではアクティビティがフォアグラウンドにありません) : onCreate メソッドの後に呼び出されるか、onStop メソッドが呼び出されるためアクティビティが非表示になっているときに呼び出されます。 、アクティビティが再び表示されます
onResume このメソッドのコールバックは、アクティビティがフォアグラウンドにあることを識別します。公式ドキュメントによると、これはアニメーションの起動や排他的なデバイス アクセス (カメラなど) に適していることが示されています。アクティビティ A がアクティビティ B を開始する場合、アクティビティ A の onPause メソッドのコールバックが完了するまでアクティビティ B は作成されないことに注意することが重要です。そのため、このコールバック メソッドでは時間のかかる操作を実行しないでください。
onStop このメソッドは、アクティビティが表示から非表示に変更されるときに呼び出されます。
onDestroy ライフ サイクルの最後のメソッドで、アクティビティが変更されようとしていることを示します。破壊されます。公式ドキュメントには、場合によっては、システムがアクティビティ ホスト プロセス (以下の図で 1 とマークされている) を簡単かつ無作法に強制終了するため、データ ストレージにはこのメソッドに依存すべきではなく、リソースにはこのメソッドを使用できると記載されています。リリース操作
次の図は公式ドキュメントに記載されている図です#アクティビティ ライフ サイクル図この図は非常に明確であり、厳密ですが、公式のドキュメント内の各ライフサイクル コールバック メソッドの説明はあまり詳しくないため、ドキュメントをよく読まないと、図にあるライフサイクル メソッドの方向性を理解するのが難しくなります。いくつかの方法を誤解している可能性があります。たとえば、子供によっては onStop メソッドを誤解し、アクティビティがバックグラウンドに入るときにこのメソッドが呼び出されると誤解することがあります。実際には、onPause メソッドはバックグラウンドに入るときに呼び出され、onStop メソッドは非表示のときに呼び出されます。子供たちは onResume メソッドがコールバックされると誤って信じます。対話は可能です。実際には、public void onWindowFocusChanged (boolean hasFocus) コールバックの hasFocus パラメータに基づいて対話が可能かどうかを判断する必要があります。 アクティビティが表示されるかどうかと、フォアグラウンドにあるかどうかは 2 つの別のことです
、onStart は onStop とペアになってアクティビティが表示されるかどうかを示し、onPause は ## とペアになります。 #onResume は、アクティビティがフォアグラウンドにあるかどうかを記述します。アクティビティの可視性は、それが操作できることを意味するものではなく、同様に、アクティビティがフォアグラウンドにある場合は操作できない場合があります。直接的な例としては、アクティビティがダイアログを表示する場合、この時点ではアクティビティはまだフォアグラウンドにありますが、アクティビティと対話することはできません。
さらに、多くの人はマークされた方向を個人的に確認していないのではないかと思います。上の図の 2 はい、このシナリオを対話的に再現するのは難しい場合が多いためです。このシナリオでは、コード制御を通じてシミュレーションできます。アクティビティ A がアクティビティ B を開始し、アクティビティ B
の onCreate メソッドで終了メソッドを直接呼び出します。以上がアクティビティのライフサイクルを簡単に説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。