Android開発ガイドのアプリケーションの基礎ページから:
デフォルトでは、アプリケーション内のすべてのアクティビティは相互に親和性があります。つまり、すべてのアクティビティが同じタスクに属することが優先されます。
「singleInstance」アクティビティは、そのタスクの唯一のアクティビティとしてスタンドアロンです。別のアクティビティを開始すると、そのアクティビティは、起動モードに関係なく、FLAG_ACTIVITY_NEW_TASKが意図されているかのように、別のタスクで起動されます。他のすべての点で、「singleInstance」モードは「singleTask」と同じです。
上記のように、「singleTask」または「singleInstance」アクティビティのインスタンスは複数存在しないため、インスタンスはすべての新しいインテントを処理することが期待されます。「singleInstance」アクティビティは常にスタックの最上位にあるため(タスク内の唯一のアクティビティであるため)、常にインテントを処理できる位置にあります。ただし、「singleTask」アクティビティには、スタック内でその上に他のアクティビティがある場合とない場合があります。含まれている場合は、インテントを処理する位置になく、インテントは削除されます。(インテントが削除されたとしても、そのインテントが到着すると、タスクがフォアグラウンドになり、そこに残ります。)
どちらの起動モードでもアクティビティのインスタンスが複数存在することはないため、戻るボタンを押すと、ケース内のアクティビティの既存のインスタンスに常に移動します。
重要な違いは、「singleTask」では、何かが選択されたときに起動される新しいアクティビティに対して新しいタスクを作成する必要がないことです。また、戻るボタンの新しいタスクを毎回削除する必要もありません。
アクティビティスタックはすべて1人のユーザーの「タスク」に関係し、singleInstanceが常にそれらを処理するのに役立つ複雑なインテント構造を持っているようには思えないため、singleTask起動モードを使用することをお勧めします。
これは、詳細と画像のクレジットについての優れたブログ投稿です:Androidアクティビティとタスクシリーズ–AndroidのUIコンポーネントモデルの紹介