如何恢复当前状态的现有任务
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());
我的应用程序有两个 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());