APP二次启动问题
来源:互联网 发布:孝子之至 莫大乎尊亲 编辑:程序博客网 时间:2024/06/03 16:00
这两天突然在考虑一个问题,就是APP在按了HOME键之后再点击应用图标(进程没被杀死的情况下)是如何恢复到刚才打开的界面的。按理来说在lanucher点击应用图标是start有android.intent.action.main这个属性activity,那么为什么能够回到原来打开的界面呢?个人初步猜测是启动模式还有affinity有关。带着问题去看了下网上关于启动流程的分析以及android的源码。
从lanucher里启动的activity默认带有FLAG_ACTIVITY_NEW_TASK属性,所以走进这个if条件,在启动页不是singleinstance的情况下会走到findTaskLockded这个方法里面。
在这个方法里,遍历当前存在的所有task
接下来就是进入这个判断,判断当前栈顶的task和要启动的activity所在的task是否是同一个,由于是从lanucher启动的,当前栈顶的task应该是lanucher所以在的task,所以肯定不是同一个task,所以满足这个条件,然后调用moveTaskToFontLocked,这个就是把要启动的activity所在的task移动到栈顶。然后顺这个看下去,就会看到resumeTopActivitiesLocked这个方法的调用,就是恢复当前task的顶部activity,所以我们看到就是原来点击home键所在的这个界面。
补充一点,就是这个回到原来所在页面的前提是,启动页就是有android.intent.action.main这个属性的页面不能是singletask或者singleintance, singleintance就不用细说了,因为这个属性的activity所在的task里只能存在他本身一个activity实例,恢复到它所在的task看到也只有它一个界面。如果是singletask的话,
则会命中这个条件,会执行清除task的操作,所以同样恢复不了原来的界面。
- APP二次启动问题
- App启动黑屏问题
- App启动画面问题
- App程序二次退出
- APP启动白屏问题
- app启动页面的问题
- App启动白屏问题
- 程序二次启动
- 二次启动的控制
- 防止二次启动
- 防止程序二次启动
- APP如何防止二次打包
- 如何防止app二次打包
- 关于app预防二次打包
- 解决app启动时白屏或者黑屏问题
- 罗升阳的app启动有问题
- App启动闪屏黑屏问题
- iOS App键盘第一次启动延迟问题
- const和static总结
- 开发过程中注意事项及优化(持续更新~~~)
- #129 Rehashing
- SSH中后端获取到的数据传向页面显示
- C语言基础知识
- APP二次启动问题
- BZOJ1110: [POI2007]砝码Odw
- 集成学习实践(sklearn)
- servlet利用拦截器改写request和response
- pycharm——快捷键、常用设置、配置管理
- UICollectionView基础
- 剑指Offer_45_扑克牌顺子
- angularjs的自定义directive指令的绑定策略scope:”@”、”=”、”&”
- JavaScript 中的 this !