2 つのアクティビティがあるとします。
A - 「ホーム ランチャーが有効」なメイン アクティビティ (適切なインテント フィルターなど)
B - singleTask 仕様 (このアクティビティのインスタンスは 1 つしか存在できません) およびカスタム taskAffinity (メイン タスクと区別するため) を使用するタスク ルート アクティビティ根)。
B がタスクを表すと仮定します。これは、完了していない場合にのみ有効です。完了後に戻ったり、最近のタスクから再開したりすることはできません。
ある時点で、A が B を起動して新しいタスクを開始します。目標は、ユーザーが B を完了したときに B を最近のタスク リストから削除することです。ユーザーは B から他のタスクに移動し (ホームの長押しを使用)、完了していない限り B に戻ることができます。ランチャーから A を起動しても、B は異なるタスク アフィニティを持っているため、フォアグラウンドに移動しません。
Android は B をタスクのルートとして認識するため、B は完了しても最近のタスク リストに表示され、ユーザーはいつでもそれに戻ることができます。B を A のある 1 つのタスクに移動することは解決策ではありません。なぜなら、B が実行されている間、ユーザーは A と B のタスクを切り替えることができるはずだからです。B のマニフェストに excludeFromRecents を追加すると、最近のタスク リストから完全に削除されます。これも悪い解決策です。
それを達成する方法は?(私の悪い英語でごめんなさい)