android:launchMode=“singleInstance” 的影响
现有两个 Activity
ActivityA launchMode=“singleTask”
ActivityB launchMode=“singleInstance”
ActivityA 启动 ActivityB, 会为 B 单独创建一个 Task, 并将 Task[B]切换到前台. 现在 App 里面有两个 Task, Task[B]显示在前端, 这个状态作为下文的 [初始状态]
接下来操作:
按下 返回键
这时 Task[B] 在前端, 关闭 Task[B]所有的 Activity 会将上一个 Task(Task[A])移动到前端显示
回到初始状态, 按下 Home 键, 然后点击桌面的 App 图标
会唤起 Task[A], 打开的是 ActivityA, 从桌面上点击 icon 启动 Activity 的时候会带上 FLAG_ACTIVITY_NEW_TASK 标志,该标志会检查是否存在和要启动的 Activity 的 taskAffinity 标识指定的 Task,也就是 APP 中 LAUNCHER 的 activity 所处在的栈, 如果存在则直接唤起对应的 Task,也就是 Task[A].
回到初始状态, 按下 Home 键, 然后从多任务界面直接进入 App
打开的是 ActivityB, 因为 ActivityB 在一个单独的 Task[B]中, 按返回键会导致 Task[B]中唯一一个实例出栈, 导致 Task 为空, 直接回到桌面
解决问题
按下 Home 键, 然后点击桌面的 App 图标, 回到 ActivityB
在 App 回到前台的时候 start ActivityB
按下 Home 键, 然后从多任务界面直接进入 App, 按返回键回到 ActivityA
可以在 ActivityB finish 前 start ActivityA
https://blog.youkuaiyun.com/lihappyangel/article/details/51831611
https://blog.youkuaiyun.com/Mr_JingFu/article/details/79077613