A->Bからナビゲートした後、2 つのタスクがあります。最初のタスクにはAが含まれ、2 番目のタスクにはBが含まれます。Bが上でAがその下です。
B->C から移動すると、Android はアクティビティ C を A を含むタスクに起動します (B を含むタスクに起動することはできません。B は "singleInstance" として定義されているため、同じ"taskAffinity"を持つタスクに起動します)。 、この場合は A を含むタスク)。これを行うために、Android は A を含むタスクを前面に出します。これで 2 つのタスクができました。前に A と C が含まれるタスクと、その下に B が含まれる 2 つ目のタスクです。
ここで BACK キーを押すと、アクティビティ C が終了し、タスク内のその下のアクティビティ、つまり C に戻ります。まだ 2 つのタスクがあります。前に C を含むタスクと、その下に B を含むタスクです。
ここでもう一度 BACK キーを押します。これにより、アクティビティ A が終了し (したがって、A を保持していたタスクが終了し)、タスク スタック内の前のタスク、つまり B を含むタスクが前面に移動します。これで、B を含むタスクが 1 つできました。
他のシナリオでは、A->B->Cからナビゲートした後、2 つのタスクから開始します。前に A と C を含むタスクと、その下に B を含む 2 つ目のタスクです。
ここで、HOME ボタンを押します。あなたは今、「長押しでアプリに戻る」と言います。これは正確には正しくありません。「アプリに戻る」ことはできません. 「タスクに戻る」ことしかできません。しかし、2 つの異なるタスクがあります。長押しすると、2 つのタスクが表示されます。アクティビティ B に別のアイコンを提供していない限り、おそらく同じアイコンを持っているため、それらを区別できない場合があります。A と C を含むタスクを選択すると、そのタスクが前面に移動し、アクティビティ C が一番上になります。ここで BACK キーを押すと、アクティビティ C が終了し、その下のアクティビティであるアクティビティ A が表示されます。ここでもう一度BACKキーを押すと、アクティビティAが終了し、HOME画面に戻ります。B を含むタスクはまだ最近のタスクのリストにありますが、ホーム ボタンを押すと、他のタスクの下のタスク スタックにはもうありません。それはゼロに戻るようなものです。あなたは最初からやり直します。アクティブなタスクがないため、すべてのタスクが連続しており、スタックになく、階層もありません。
また、あなたの質問では、「アプリを終了する」というフレーズを使用しています。これもあまり正しくありません。BACK ボタンを押して行うことは、現在のアクティビティを終了することだけです。現在のアクティビティがタスク内の唯一のアクティビティである場合、そのタスクも終了します。ただし、「アプリを終了」しません。特にあなたの場合、「アプリ」は実際には2つの別々のタスクに存在するためです。
うまくいけば、これは明らかです。