シングルインスタンスにはAndroidならではの特性がいくつかあります。
Android におけるアクティビティ起動モードのシングルインスタンスとは、以下のような特徴を持つモードです。
- シングルインスタンス: 他のアプリからでも、同じアプリの他のアクティビティからも、どのタスクスタックにあっても、このアクティビティのインスタンスは 1 つだけが持てる
- 独立タスクスタック: このアクティビティは新しいタスクスタックを作成し、他のアクティビティとタスクスタックを共有しません。つまり、他のアプリからこのアクティビティが起動されると、新しいタスクスタックで開き、他のアクティビティはこのタスクスタック内のアクティビティと対話できません。
- シングルインスタンスモードでは、アクティビティのインスタンスがタスクスタックに1つしか存在しません。アクティビティを起動しようとすると、タスクスタックに同じアクティビティのインスタンスがすでに存在するかどうかを確認し、存在する場合はアクティビティを再利用し、存在しない場合は新しいインスタンスを作成します。
- 他のアクティビティの影響を受けない:シングルインスタンス形式のアクティビティは独立したタスクスタック内にあるので、他のアクティビティがそのライフサイクルに影響を与えることはできません。例えば、シングルインスタンス形式のアクティビティから別のアクティビティを起動すると、新しく起動されたアクティビティはシングルインスタンス形式のアクティビティのあるタスクスタックではなく、元のタスクスタック内で開きます。
SingleInstanceモードの特徴として、別のアプリからSingleInstanceモードのActivityを起動する場合、そのActivityが適切なインテントフィルタを備えている必要がある点に注意してください。そうしないと、正常に起動され、新しいタスクスタックに配置されません。