ホームページ  >  記事  >  Java  >  Android開発におけるアクティビティのライフサイクルを詳しく解説

Android開発におけるアクティビティのライフサイクルを詳しく解説

高洛峰
高洛峰オリジナル
2017-01-07 16:19:121407ブラウズ

この記事の例では、Android アクティビティのライフサイクルについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

activity クラスは android.app パッケージ内にあり、継承システムは次のとおりです:

1.Java.lang.Object

2.android.content .Context

3.android.app .ApplicationContext

4.android.app.Activity

アクティビティは独立しており、ユーザーの操作を処理するために使用されます。ほとんどすべてのアクティビティはユーザーを処理する必要があるため、アクティビティが全画面ウィンドウを指す場合、開発者はアクティビティによって作成されたウィンドウに UI を配置できます。他の方法でも実装できます。フローティング ウィンドウとして (windowIsFloating のテーマ コレクションを通じて)、または他のアクティビティに埋め込まれます (ActivityGroup を使用)。ほとんどのアクティビティのサブクラスは、次の 2 つのインターフェイスを実装する必要があります:

① onCreate(Bundle) インターフェイスは、アクティビティが初期化される場所です。通常、ここで setContentView(int) を呼び出して、リソース ファイルに定義されている UI を設定できます。findViewById(int) を使用します。 ) UI で定義されたウィンドウを取得できます。

② onPause() インターフェースは、ユーザーがアクティビティを終了する準備ができている場所です (通常、ContentProvider がデータを保存するために使用されます)。 Context .startActivity() を使用できるようにするには、すべてのアクティビティ クラスに、AndroidManifest.xml ファイルで定義された関連する「アクティビティ」項目が必要です。

アクティビティ クラスは、Android アプリケーションのライフサイクルの重要な部分です。

アクティビティのライフサイクル

システム内のアクティビティは、アクティビティ スタックによって管理されます。新しいアクティビティが開始されると、そのアクティビティはスタックの最上位に配置され、実行中のアクティビティになります。前のアクティビティはスタックに残り、新しいアクティビティが終了するまでフォアグラウンドに配置されなくなります。

アクティビティには、本質的に 4 つの異なる状態があります。

1. 画面のフォアグラウンド (アクティビティ スタックの最上部) では、アクティブ状態または実行状態 (アクティブまたは実行中) と呼ばれます。

2. アクティビティがフォーカスを失った場合。ですが、まだ表示されています (新しい非全画面アクティビティまたは透明なアクティビティがスタックの一番上に配置されます)。一時停止状態 (一時停止) と呼ばれます。中断されたアクティビティは生きたままになります (すべての状態、メンバー情報、およびウィンドウ マネージャーへの接続を保持します) が、システム メモリが極端に少ない場合は強制終了されます。

3. アクティビティが別のアクティビティによって完全にカバーされている場合、そのアクティビティは「停止」と呼ばれます。すべての状態とメンバー情報は引き続き保持されますが、表示されなくなるため、そのウィンドウは非表示になり、システム メモリを他の場所で使用する必要がある場合、停止したアクティビティは強制終了されます。

4. アクティビティが一時停止または停止状態にある場合、Android システムはアクティビティを削除するために 2 つの方法を使用します。アクティビティの終了を要求するか、そのプロセスを直接強制終了します。アクティビティがユーザーに再度表示されるときは、再起動して前の状態をリセットする必要があります。

以下の図は、アクティビティの重要な状態遷移を示しています。長方形のボックスは、開発者が実装をオーバーロードして関連するコードを実行できることを示しています。

Android開発におけるアクティビティのライフサイクルを詳しく解説 上の図では、アクティビティには 3 つの主要なサイクルがあります:

1. ライフ サイクル全体は onCreate(Bundle) から始まり onDestroy() で終わります。アクティビティは、onCreate() ですべての「グローバル」状態を設定し、onDestory() ですべてのリソースを解放します。たとえば、アクティビティにネットワークからデータをダウンロードするためにバックグラウンドで実行されているスレッドがある場合、アクティビティは onCreate() でスレッドを作成し、onDestory() でスレッドを停止できます。

2. 表示されるライフサイクルは onStart() から始まり onStop() で終わります。この間、アクティビティは画面に表示されますが、フォアグラウンドに表示されず、ユーザーと対話することはできません。これら 2 つのインターフェイスの間では、ユーザーに表示される UI データとリソースを維持する必要があります。たとえば、表示が不要になったときに発生する UI の変更をリッスンするために、onStart に IntentReceiver を登録できます。 onStop() で登録できます。 で登録を解除します。アクティビティはいつでも表示と非表示を切り替えることができるため、onStart() と onStop() はどちらも複数回呼び出すことができます。

3. フォアグラウンドのライフサイクルは onResume() から始まり onPause() で終わります。この間、アクティビティはすべてのアクティビティの先頭にあり、ユーザーと対話します。アクティビティは、再開状態と一時停止状態を頻繁に切り替えることができます。たとえば、デバイスがスリープの準備をしているとき、アクティビティの処理結果がディスパッチされたとき、新しいインテントがディスパッチされたときです。したがって、これらのインターフェイス メソッドのコードは非常に軽量である必要があります。

アクティビティのライフサイクル全体は次のインターフェースメソッドで定義されており、すべてのメソッドはオーバーロードできます。すべてのアクティビティは、設定を初期化するために onCreate(Bundle) を実装する必要があります。 現在、ほとんどのアクティビティは、onCreate(Bundle) のステータスを復元するために onPause() を実装する必要があります。設定。

public class Activity extends ApplicationContext {
protected void onCreate(Bundle icicle);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onFreeze(Bundle outIcicle);
protected void onPause();
protected void onStop();
protected void onDestroy();
}

この記事が Android プログラミングに携わるすべての人に役立つことを願っています。

Android 開発におけるアクティビティのライフサイクルに関する詳細な記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。