前情提要:
按正常的App开发设计,每个App都会有启动页(也就是闪屏页)和首页(通常叫MainActivity),而这时候首页的启动模式大多数人会在 ==AndroidManifest==设置 ==android:launchMode="singleTask"==
可是最近入职的新公司做的App没有启动页,只有首页,而我按照惯例给首页设置了singleTask的启动模式,然后App就"炸"了!
异常描述
这个"炸"不是说App崩溃了,而是当我们启动App后,不管我们是从首页跳转到A页面,或者是从首页跳转到B页面再跳转到C页面,只要我们点击Home键返回桌面,再点击桌面图标把App从后台切回前台,系统都会帮我们启动一次首页,没错,就是启动一次首页
而基于首页的launchMode是SingleTask,在重启首页之前Activity栈中处于首页之上的所有Activity都会被全部销毁,重新回到首页
(如果对启动模式不了解的,可以看这篇文章[Android:图解四种启动模式 及 实际应用场景解说])
没想到啊,我一直以为是业务代码中有什么地方出问题重新启动首页,后来通过断点排除了所有可能性,最后对比以前做过的软件,才想到了可能是因为缺少了启动页导致的问题。
解决方式
使用singleTask的前提:
- 很多时候是为了保持首页的唯一性
- 为了从子页面跳回首页的之后不必去写销毁其他子页面的代码
解决方法:
目前只能通过代码去销毁其他子页面后返回首页了
问题的原因
还不知道为什么启动页如果设置singleTask会出现这种问题,如果有大神知道的话,麻烦指导一下,谢谢!
网友评论