C++ や Java などの言語でプログラミングを始めるとき、最初に学ぶのは main メソッド、つまりアプリケーションを開始するときにオペレーティング システムが呼び出すポイントです。
Android には main メソッド自体はありませんが、アクティビティの発生時に SSOO によって呼び出されるメソッドがいくつかあります。 大事なイベント。 この章では、これらのイベントが何であるか、そしてそれがどのように機能するかを詳しく学びます。 アクティビティの完全なサイクル Androidの。 公式ドキュメント では、このトピックについて広範な説明が提供されています。ここでは、最も重要な要素と、それらを処理する際の一般的なエラーについて説明します。
Android のライフサイクルは次のスキームに従います。
ライフサイクルイベント
- onCreate(バンドル)
- という瞬間を表しています アクティビティが作成されます。 このメソッドは通常、Android で新しいアクティビティを作成するときにウィザードによって生成され、アクティビティに必要なものすべてがここで作成されます。 以前にアクティビティ データを Bundle オブジェクトに保存している場合は、それを使用して再生成できます。 通常は使用しません。
- onStart()
- アクティビティは次の場所に移動します 画面に映る、必ずしも目に見えるわけではありませんが。 停止から戻っている場合は、最初に onRestart() を実行します。
- onRestart()
- onStop() の呼び出しから進むときの onStart() の前。
- onResume()
- 活動が始まります インタラクションに応答する ユーザー。
- onPause()
- 活動は、 答えるのをやめる ユーザーインタラクションに。
- onStop()
- アクティビティは完全にに移行しました バックグラウンド.
- onDestroy()
- アクティビティ 破壊されるだろう そしてそのリソースが解放されました。
これらのメソッドのいずれかを実装する必要がある場合は、これらのプロファイルをアクティビティに追加することで実装します。
public class MyActivity extends Activity { protected void onCreate(Bundle SavedInstanceState) { super.onCreate(savedInstanceState); ... } protected void onStart() { super.onStart(); ... } protected void onRestart() { super.onRestart(); ... } protected void onResume() { super.onResume(); ... } protected void onPause() { ... super.onPause(); } protected void onStop() { ... onStop(); } protected void onDestroy() { ... super.onDestroy(); } }
を維持することが重要です スーパークラスのメソッド呼び出し 驚かないように。 私たちの活動を超えた各イベントのタスクは維持されなければなりません。 この呼び出しは、入力イベントの始まりと出力イベントの終わりまで行われます。 このようにして、必要だが制御できないアクティビティの要素は、使用する前に作成され、その後破棄されるため、予期せぬ事態を避けることができます。
すべてのイベントを追加する必要はありません、必要のないものはデフォルトの実装を使用します。 よく使用するメソッドは、onCreate、onPause、onRestart です。他のメソッドには触れないでください。
onCreate の意味は明らかです。これは、必要なリソース、ビュー、その他必要なものをロードする場所です。 出力に関しては、onPause のみに注目します。 onStop と onDestroy を避ける理由は、これらを制御できないためです。 onPause はアプリがフォアグラウンドから出てくるたびに実行され、他の XNUMX つはオペレーティング システムのニーズに基づいて実行されます。 彼らは決して走れないかもしれない! これは、アクティビティからデスクトップへ、またはその逆にアクティビティを何度も作成するコストを回避するために行われます。また、オペレーティング システムは、使用済みのリソースが必要な場合にのみ解放し、すべてのリソースにサービスを提供する必要はありません。オープンプロセス。
これは、アプリケーションが onPause の実行後に終了すると想定し、それが私たちの データを保存する最後のチャンス 保存し、地理位置情報など、使用しているサービスを停止する必要があります。 サービスを停止した場合、再起動する適切な場所は onRestart です。
他の方法はあまり使用する必要はありません。 これが必要となる一般的なケースは、Facebook や Flurry などのサードパーティ ライブラリを統合する場合です。 このような場合、アクティビティのメソッドをコードにバインドするように求められます。 たとえば、Flurry セッションを登録するには、onStart メソッドでセッションを開始するように求められます。
いくつかの便利なアイデア
- それぞれのイベントの目的を覚えておいてください。 常に onCreate が必要になりますが、最も消費量の多いサービスを停止して再起動するには、onPause と onResume が必要になることがよくあります。
- 他のイベントには触れないでください 特に必要ない場合。
- onStop と onDestroy を信頼しないでください。 彼らは決して呼ばれないかもしれない。 必要なものをすべて onPause に保存します。
- Final 以外の静的変数の使用を避ける。 戻ったときにもアプリをロードすることができ、残した値が保持されます。 やむを得ず使用する場合は、最前面に戻ったときに必ず値をリセットしてください。
詳しくは - Androidでのプログラミングの基本ガイド