android:launchMode="singleTask"他にも、以下のような起動モードがあります。
起動モード | Intentで呼ばれた時の Activityタスクの所持場所 | 複数生成できるか | インスタンスのタスクに 他のアクティビティを内包できるか | 新規にインスタンスを 生成した時の振る舞い |
---|---|---|---|---|
default | startActivity()を呼び出したタスク | 複数回インスタンス化可能 | 複数のアクティビティを割り当て可能 | 新しいインスタンスに応答する時には 必ず新しいインスタンスを生成 |
singleTop | startActivity()を呼び出したタスク | 複数回インスタンス化可 | 複数のアクティビティを割り当て可能 | クラスの既存のインスタンスが対象タスクのアクティビティスタックの 最上位にあれば、それを再利用して新しいインスタンスを処理。 それ以外は新しいインスタンスを生成 |
singleTask | アクティビティが常にタスクのルートアクティビティになる。 他のタスクの一部として起動しない | インスタンスは1つに制限。 アクティビティはタスクのルート | 複数のアクティビティを割り当て可能 | インスタンスは常に新しいインテントで起動 |
singleInstance | アクティビティが常にタスクのルートアクティビティになる。 他のタスクの一部として起動しない | インスタンスは1つに制限。 アクティビティはタスクのルート | アクティビティは、そのタスク内の唯一の アクティビティとして単独で動作 | インスタンスは常に新しいインテントで起動 |