android:launchMode=“singleInstance“ 的影响

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值