从Google Play安装的App切后台后点击图标重启不恢复后台原因咨询
问题原因分析
- Google Play启动Intent与桌面启动Intent不匹配:这是该问题最常见的诱因。从Google Play安装完成页点击「打开」启动应用时,传入的Intent会携带特殊的
FLAG_ACTIVITY_NEW_TASK附加标记,和桌面Launcher正常拉起应用的Intent配置存在差异,会导致新的根Activity被叠加在默认任务栈上层。按下Home切后台后,点击桌面图标时Launcher会尝试拉起自身规则下的根Activity,触发已有任务栈的清理逻辑,从表象看就是应用被重新启动。手动杀进程后后续启动均由Launcher正常触发,Intent配置一致,就不会出现该问题。 - 首次启动任务栈属性异常:如果应用启动页的
android:launchMode配置存在适配缺陷,或者Google Play启动应用时临时覆盖了任务栈的taskAffinity属性,会导致首次启动的应用任务没有被正确关联到Launcher的任务管理列表。切后台后Launcher识别不到已存在的后台应用进程,会直接创建新的应用实例。手动杀掉进程后临时覆盖的属性失效,下次启动时Launcher会按照应用Manifest里的配置正常创建任务栈,后续切后台恢复逻辑就会正常运行。 - 系统临时安装标记影响:部分Android定制系统会给从应用商店首次安装后直接启动的应用添加临时的「安装后启动」状态标记,处于该状态的应用进程后台优先级会被调低,且不会被纳入Launcher的后台恢复白名单。点击桌面图标启动时系统会跳过后台恢复逻辑直接冷启动应用,手动杀进程后该临时标记会被系统清除,后续启动就会遵循正常的前后台切换规则。
- 应用首次初始化逻辑缺陷:如果应用在首次冷启动时会执行耗时的初始化校验逻辑,且没有在
onSaveInstanceState()回调中正确保存首次启动的运行状态,切后台后系统触发资源回收时会丢失运行状态,再次启动时应用会判定需要重新走初始化流程,表现为重启。第二次启动时初始化逻辑已经执行完毕,状态保存和恢复逻辑正常运行,就不会复现问题。
内容的提问来源于stack exchange,提问作者tomtript
相关产品推荐
相关产品推荐

