当应用程序从 android 启动器重新启动时如何恢复 activity?

How to resume activity when application relaunched from android launcher?

我有一个实现两个活动的应用程序。 Activity A 用于选择设备上的一些文件,activity B 用于在处理这些文件时显示附加信息。它们都以 singleInstance 作为启动模式。

在应用程序启动时 activity 运行 秒。然后这个 activity 启动第二个 activity B,创建一个通知。如果我点击此通知或从最近打开 运行ning 应用程序,它工作正常并显示 运行ning activity B。但是如果我之前开始应用程序并且 activity B已经 运行ning,从应用程序菜单再次启动它会导致显示 activity A 而旧的 activity B 已经 运行ning 并且可以从通知栏访问。

那么,我应该怎么做才能使应用程序 运行 同时只有一个 activity 并在从启动器调用时显示第二个 activity(如果第二个 activity已经开始但还没有结束)?

您的启动器 intent 应该映射到虚拟 activity,没有视图(或者可能是飞溅谁知道!)。在那个虚拟 activity 的 onCreate 中,您检查之前是否保存了一个状态,并根据状态切换到所需的 activity。

以及如何设置状态?好吧,让我们尝试一些简单的事情。假设当 Activity A 恢复时,我们将 "A" 放入 SharedPreference 中的某个键。如果 Activity B 恢复,我们将 "B" 放入首选项中的相同键。现在你的应用程序在 Activity B 可见时退出,保存的状态将是 "B",你从主屏幕启动,虚拟 activity 在状态和启动意图中找到 "B"去 B 否则去 A.