如何恢复当前状态的现有任务

How to resume an existing task in its current state

我的应用程序有两个 Activity A 和 B。A 是任务的根,是从启动图标启动的那个。 B可以从A开始。

除了从启动图标启动 A 外,还可以通过单击另一个应用程序中的文件来启动 A,例如单击电子邮件附件或云端硬盘中的文件。我通过向清单文件中的意图过滤器添加操作和类别来完成此操作。

我想这样做,以便当从另一个应用程序启动 A 时,我希望现有任务恢复到之前的相同状态,而不是创建新任务。这可能是 activity A 或 B,无论用户在按下主页之前碰巧在哪里。

我已经尝试了各种启动模式和意图标志,但似乎没有任何效果。

将启动模式更改为单任务。并听取 onNewIntent()

广播与清单中的启动器意图相同的意图:

Intent intent = new Intent(context, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);

我不知道为什么,但这会引发现有任务而不是开始新任务。相比之下,以 "official" 方式获得的启动器意图实际上将启动一个新任务:

Intent intent = context.getPackageManager()
   .getLaunchIntentForPackage(context.getPackageName());