1.アクティビティの起動モード
標準
標準モード:アクティビティを開始するたびに新しいインスタンスを作成します。
singleTop
スタックトップ多重化モード:新しいアクティビティがすでにタスクスタックのトップにある場合、このアクティビティは再作成されず、現在要求されている情報がコールバックonNewIntentメソッドを介して取得されます。
singleTask
スタック内再利用モード:単一インスタンスモード。
アクティビティを開始するときは、最初にそのタスクスタック(TaskAffinityパラメーターで構成されたスタック名)を探します。
- 存在しない場合は、タスクスタックを再作成してから、Activityインスタンスを作成して配置します。
- 存在する場合は、スタックにActivityインスタンスがあるかどうかによって異なります。存在する場合は、スタックの最上位に転送され、そのonNewIntentメソッドが呼び出されます。存在しない場合は、Activityインスタンスが作成され、プッシュされます。スタックに。
singleInstance
シングルインスタンスモード:singleTaskの拡張バージョン。このアクティビティのインスタンスは、単一のタスクスタックにのみ配置できます。
2.起動モードの指定方法
AndroidMenifest構成
<activity
android:name="com.syy.note.firstActivity"
android:configChanges="screenLayout"
android:launchMode="singleTask"
android:lable="@string/app_name" />
インテントセットフラグ
Intent intent = new Intent();
intent.setClass(MainActivity.this,firstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
優先度:フラグビット> androidmenifest構成
異なる設定範囲
ps:スタック情報の表示コマンド:adb shell dumpsys activity
3.活動の旗
国旗 | 意味 |
FLAG_ACTIVITY_NEW_TASK | singleTask、スタック内の多重化モード |
FLAG_ACTIVITY_SINGLE_TOP | singleTop、スタックトップ多重化モード |
FLAG_ACTIVITY_CLEAR_TOP | 起動時に、同じタスクスタック内にあるすべてのアクティビティをスタックからポップアウトする必要があります。このフラグビットは通常、singleTask起動モードで表示されます。 |
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | この種のアクティビティは、履歴アクティビティリストに表示されません |