Activity启动模式位singleTask遇到的坑


谈谈我在AndroidManifest.xml文件中设置Activity的启动模式为singleTask时遇到的两个坑.

这里只谈singleTask启动模式,其他的在此处被省略.

坑一:

扫描二维码关注公众号,回复: 713345 查看本文章

假设有三个Activity:分别为AActivity,BActivity,CActivity,其中AActivity的启动模式为singleTask,

其他的都是默认AActivity为程序的入口.在启动AActivity,AActivity中启动BActivity,finish

AActivity,再在BActivity中启动CActivity,BActivityfinish.此时栈顶的ActivityCActivity,并按home

键返回桌面,再从桌面点击应用的图标启动启用,此时程序会重新启动AActivity(ps:我一直以为是

回到CActivity,实践证明我错了),并将其置为栈顶.你要想再回到回到桌面前的CActivity,得按返回

键才能回到CActivity.我解释不了这其中的原理.求解释!!!!

坑一解决办法:新建一个SplashActivity作为程序的启动Activity,启动模式为默认,SplashActivity

启动启动模式为singleTaskAActivity.在按之前的步骤可,home键回来的时候可以依旧是CActivity.

坑二:

(1)假设有两个Activity:分别为ActivityAActivityB,其中ActivityA的启动模式为singleTask.

ActivityA中启动ActivityB,ActivityAfinish,再在ActivityB中启动ActivityA,ActivityB不用finish,由于

ActivityA的启动模式为singleTask,会将ActivityA至于栈顶,并将其上的ActivityB弹出桟.按返回键

会直接回到桌面.

(2)依旧是两个Activity:分别为ActivityA,ActivityB,其中ActivityA的启动模式为singleTask,ActivityA

中启动ActivityB,ActivityA finish,再在ActivityB启动ActivityA,ActivityBfinish,尽管ActivityA的启动模式

singleTask,但是finish的时候已经将其弹出桟,所以,再次启动的时候重新创建了一个ActivityA对象压

入栈顶,所以这里在ActivityA中按返回键,结果与(1)的不一样,回到的是ActivityB.


猜你喜欢

转载自blog.csdn.net/lljjyy001/article/details/73249998