Activity起動モードおよび適用シーン
3970 ワード
Androidでは、Activityの起動モードは、standard(標準モード)、singleTop(スタックトップ多重モード)、singleTask(スタック内多重モード)、singleInstance(シングルインスタンスモード)の4種類があります.
Activityの起動モードを設定するには、①Manifestインベントリファイルに直接、対応するActivityノードのlaunchModeプロパティに設定する方法があります.②startActivityメソッドを呼び出す場合、パラメータIntentの初期化時にaddFlagsまたはsetFlagsメソッドを呼び出して起動モードを設定します.ここで、②の優先度は①より高く、インベントリファイルとIntentに起動モードを同時に設定すると、Intentで設定した起動モードに従います.
以下では、4つの起動モードと適用シーンについて説明します.
一、standard(標準モード):Activityのデフォルト起動モード.新しいActivityを開くたびに、タスクスタックに新しいインスタンスが作成されます.BACKキーを押すたびに、スタックが空になり、スタックが空になるまでスタックがポップアップされ、システムはこのタスクスタックを回収します.
設定方法:AndroidのActivityのデフォルト起動モードがstandardで、特に指定する必要はありません.特に指定したい場合は、インベントリファイルに設定します.
二、singleTop(スタックトップ多重モード):Activityがスタックトップにある場合、Activityの新しいインスタンスは作成されません.IntentパラメータはActivityのonNewIntentメソッドで呼び出されます.Activityがスタックの上部にない場合、standard起動モードで実行されるプロセスと同じように、新しいインスタンスが作成されます.
適用シナリオ:通知を受信するインタフェース、ブラウザのブックマークページなど.
設定方法せっていほうしき:インベントリファイルでの設定インベントリふぁいるでのせってい
またはコードに起動モードを指定します
三、singleTask(スタック内多重モード):単一インスタンスモード.Activityがスタックにインスタンスが存在しない場合、新しいインスタンスが作成され、スタックの上部に配置されます.
スタックにActivityのインスタンスが存在する場合、新しいActivityインスタンスは作成されませんが、ActivityのonNewIntentメソッドが実行され、Activityが表示されます.このとき、Activityが表示される前に、ターゲットActivityの上に他のActivityが存在すると、これらのActivityはポップアップされて破棄される.つまりclearTopプロシージャを実行します.
注意:clearTopプロセスは手動で開くことができます.開く方法は、コードにIntentのパラメータを設定することです(リストファイルでは識別を設定できません).
適用シナリオ:この設計モードはH 5 WebApp、またはオリジナルアプリケーションのプログラムエントリポイントインタフェースに適している.WebAppの場合、プログラムのジャンプはすべてWebページキャリアのActivityで完了するので、このActivityはアプリケーションの全体的なプロセスを担持し、1つのインスタンスだけで十分です.
設定方法せっていほうしき:インベントリファイルでの設定インベントリふぁいるでのせってい
またはコードに起動モードを指定します
四、singleInstance(単一インスタンスモード):このモードのインスタンスは1つのタスクスタックに単独で存在する.Activity AがsingleInstanceを有効にした後、Activity Bを介してActivity Aにジャンプしようとすると、Activity Aが直接多重化されます.
適用シナリオ:アラームのアラームインタフェースやアラームの設定インタフェースなど、アプリケーションから分離されたActivityに適用されます.
注意:singleInstanceモードはアプリケーションの中間ページには適用されません.中間ページに切り替えると、アプリケーションバックグラウンドのタスクスタック(singleInstance Activityがあるタスクスタック)がフロントに切り替わり、ユーザーがBACKキーを押すか、HOMEキーを押してデスクトップに戻ってからアプリケーションに戻ると、インタフェースのジャンプが混乱し、インタフェースのジャンププロセスを制御するのに不利になります.
設定方法せっていほうしき:インベントリファイルでの設定インベントリふぁいるでのせってい
このモードはコードでは実現できません.
タスクスタックについて:タスクスタックは、リストファイルのActivityノードのtaskAffinityプロパティで設定できます.フォーマットは文字列です.デフォルトは、パッケージ名を適用します.
Activityの起動モードを設定するには、①Manifestインベントリファイルに直接、対応するActivityノードのlaunchModeプロパティに設定する方法があります.②startActivityメソッドを呼び出す場合、パラメータIntentの初期化時にaddFlagsまたはsetFlagsメソッドを呼び出して起動モードを設定します.ここで、②の優先度は①より高く、インベントリファイルとIntentに起動モードを同時に設定すると、Intentで設定した起動モードに従います.
以下では、4つの起動モードと適用シーンについて説明します.
一、standard(標準モード):Activityのデフォルト起動モード.新しいActivityを開くたびに、タスクスタックに新しいインスタンスが作成されます.BACKキーを押すたびに、スタックが空になり、スタックが空になるまでスタックがポップアップされ、システムはこのタスクスタックを回収します.
設定方法:AndroidのActivityのデフォルト起動モードがstandardで、特に指定する必要はありません.特に指定したい場合は、インベントリファイルに設定します.
二、singleTop(スタックトップ多重モード):Activityがスタックトップにある場合、Activityの新しいインスタンスは作成されません.IntentパラメータはActivityのonNewIntentメソッドで呼び出されます.Activityがスタックの上部にない場合、standard起動モードで実行されるプロセスと同じように、新しいインスタンスが作成されます.
適用シナリオ:通知を受信するインタフェース、ブラウザのブックマークページなど.
設定方法せっていほうしき:インベントリファイルでの設定インベントリふぁいるでのせってい
singleTop" />
またはコードに起動モードを指定します
Intent intent = new Intent(this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
三、singleTask(スタック内多重モード):単一インスタンスモード.Activityがスタックにインスタンスが存在しない場合、新しいインスタンスが作成され、スタックの上部に配置されます.
スタックにActivityのインスタンスが存在する場合、新しいActivityインスタンスは作成されませんが、ActivityのonNewIntentメソッドが実行され、Activityが表示されます.このとき、Activityが表示される前に、ターゲットActivityの上に他のActivityが存在すると、これらのActivityはポップアップされて破棄される.つまりclearTopプロシージャを実行します.
注意:clearTopプロセスは手動で開くことができます.開く方法は、コードにIntentのパラメータを設定することです(リストファイルでは識別を設定できません).
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
適用シナリオ:この設計モードはH 5 WebApp、またはオリジナルアプリケーションのプログラムエントリポイントインタフェースに適している.WebAppの場合、プログラムのジャンプはすべてWebページキャリアのActivityで完了するので、このActivityはアプリケーションの全体的なプロセスを担持し、1つのインスタンスだけで十分です.
設定方法せっていほうしき:インベントリファイルでの設定インベントリふぁいるでのせってい
singleTask" />
またはコードに起動モードを指定します
Intent intent = new Intent(this, TargetActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
四、singleInstance(単一インスタンスモード):このモードのインスタンスは1つのタスクスタックに単独で存在する.Activity AがsingleInstanceを有効にした後、Activity Bを介してActivity Aにジャンプしようとすると、Activity Aが直接多重化されます.
適用シナリオ:アラームのアラームインタフェースやアラームの設定インタフェースなど、アプリケーションから分離されたActivityに適用されます.
注意:singleInstanceモードはアプリケーションの中間ページには適用されません.中間ページに切り替えると、アプリケーションバックグラウンドのタスクスタック(singleInstance Activityがあるタスクスタック)がフロントに切り替わり、ユーザーがBACKキーを押すか、HOMEキーを押してデスクトップに戻ってからアプリケーションに戻ると、インタフェースのジャンプが混乱し、インタフェースのジャンププロセスを制御するのに不利になります.
設定方法せっていほうしき:インベントリファイルでの設定インベントリふぁいるでのせってい
singleInstance" />
このモードはコードでは実現できません.
タスクスタックについて:タスクスタックは、リストファイルのActivityノードのtaskAffinityプロパティで設定できます.フォーマットは文字列です.デフォルトは、パッケージ名を適用します.