记一次SingleTask的坑:App从后台切回前台后都会重新回到首页,并销毁其他页面

前情提要:

按正常的App开发设计,每个App都会有启动页(也就是闪屏页)和首页(通常叫MainActivity),而这时候首页的启动模式大多数人会在 ==AndroidManifest==设置 ==android:launchMode="singleTask"==

可是最近入职的新公司做的App没有启动页,只有首页,而我按照惯例给首页设置了singleTask的启动模式,然后App就"炸"了!

异常描述

这个"炸"不是说App崩溃了,而是当我们启动App后,不管我们是从首页跳转到A页面,或者是从首页跳转到B页面再跳转到C页面,只要我们点击Home键返回桌面,再点击桌面图标把App从后台切回前台,系统都会帮我们启动一次首页,没错,就是启动一次首页

而基于首页的launchMode是SingleTask,在重启首页之前Activity栈中处于首页之上的所有Activity都会被全部销毁,重新回到首页
(如果对启动模式不了解的,可以看这篇文章[Android:图解四种启动模式 及 实际应用场景解说]

没想到啊,我一直以为是业务代码中有什么地方出问题重新启动首页,后来通过断点排除了所有可能性,最后对比以前做过的软件,才想到了可能是因为缺少了启动页导致的问题。

解决方式

使用singleTask的前提:

  1. 很多时候是为了保持首页的唯一性
  2. 为了从子页面跳回首页的之后不必去写销毁其他子页面的代码

解决方法:

目前只能通过代码去销毁其他子页面后返回首页了

问题的原因

还不知道为什么启动页如果设置singleTask会出现这种问题,如果有大神知道的话,麻烦指导一下,谢谢!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容