2番目のレッスンアクティビティの開始モード

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 この種のアクティビティは、履歴アクティビティリストに表示されません

 

 

 

おすすめ

転載: blog.csdn.net/wishxiaozhu/article/details/114601294