Android启动模式launchMode Home键引起多APP Activity切换问题

Android启动模式launchMode的一个点:Home键引起多APP Activity切换问题

来源于一个BUG,测试提出,我写的一个界面(这里使用Aapp:ActivityA代替,这个activity会在某些场景,系统触发后自动弹出),不论在什么时候,退出都会回到Aapp。即使之前的界面是Bapp,Capp。

测试提到的这个原因,显然是因为启动模式,activity的栈问题导致的。
经过分析测试复现的步骤如下:

  1. 打开Aapp:ActivityB;
  2. home回到桌面,打开Bapp或者Capp任意APP;
  3. 触发Aapp的自动打开Aapp:ActivityA;
  4. 退出Aapp:ActivityA, 于是bug出现。

没有自动回到Bapp/Capp, 而是回到了Aapp:ActivityB, 只有再次退出这个,才会回去。
问题的原因我就不多做解释launchMode的运作机制了。随便百度一大堆。后面我将补充说明。
怎么解决这个问题呢?
把这个需要自动弹出的Aapp:ActivityA设置成singleInstance即可。
我们知道singleInstance是会开辟一个单独的栈给这类actiivty。因此他弹出后,将回到老的堆栈去。

而我这里记录的原因是,我突然理解到的一个点在其他帖子中都并没有提到的一个点,多APP下标准模式的流程
standard launchMode的Activity,在同一个应用A下,他们是串起来的栈。不同的app并不是一起串起来的。

首先,先开启了Aapp:ActivityB, 在Home键的干扰下,打开了Bapp:ActivityA。
在这里插入图片描述

再次突然触发弹出Aapp:ActivityA, 于是栈的情况是:
在这里插入图片描述
后来,当A销毁,首先他回去的时候,找的是自己的ActivityB,而不是之前的Bapp的Activity。

只有当设置为singleInstance的时候,AcitivyA退出后,该栈整个消失,于是就回到了上一个栈B的栈顶Acitivy。

猜你喜欢

转载自blog.csdn.net/jzlhll123/article/details/83784651
今日推荐