《关于Android的启动模式和A到B的一些理解——1》

最近面试,遇到面试官问了个问题:activity A到B都已经打开过的情况下的的生命周期。

说老实话,开发那么四年多,还真没考虑过这个问题,可能真的有点不思进取了,也有十分是懈怠了。

当时直接的回答是:A:onPause;B:onResume。

面试官没说什么,但是最后的面试结果不言而喻。

回到家后网上搜了一下,看了好多文章直接理解的是 : AonPause->BonCreate->BonStart->BonResume->AonStop。

刚开始觉得挺对的,后来又想起了面试的时候问的activity的启动模式,然后问题就出现了,不同模式下他们的生命周期也许是不一样的,所以刚刚那个答案在某个启动模式下可能是不正确的。

通过验证,AonPause->BonCreate->BonStart->BonResume->AonStop,这个生命周期,在大部分启动模式下是正确的。

不说废话了,直接上结果(就是那么简单粗暴)。

在A到B都已经打开过的情况下:

AB都是standard启动模式:AonPause->BonCreate->BonStart->BonResume->AonStop

AB都是singleTop启动模式:AonPause->BonCreate->BonStart->BonResume->AonStop

AB都是singleTask启动模式:AonPause->BonCreate->BonStart->BonResume->AonStop

AB都是singleInstance启动模式:AonPause->BonRestart->BonStart->BonResume->AonStop

可以看到在其他三种模式中A到B的周期是一样的,而在singleInstance启动模式中,走的onRestart而不是onCreate,而原因我们可以在singleInstance模式的解释中找到“一旦该模式的Activity的实例存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例”。B被重用了,所以他不会再被新建就不会再走onCreate,而是走activity的重启流程。

在验证过程中,我是不断修改启动模式,然后AB互跳进行验证的。在思维稍微发散的时候,又想到了好多相关的问题。

AB模式不一样的情况,A跳到B后B跳到A的情况,如果加入activity C的情况,B不是A启动的时候的情况,A或者B的某个方法被堵塞的情况下会不会不一样,xxxxxxxxx,xxxxxx

心里一万个草泥马跑过,这特么也太多可能性了,这是找到大坑好好洗澡了。最后改了标题,加上了个..........1.....

下一篇:AB模式不一样的情况。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值