Android 启动模式 之 singleTask

android:launchMode="singleTask"--------挺好

设置了SingleTask这种存在方式,Android中它维持一个Activity堆栈(注意是Activity堆栈,不是java中说的堆栈)中的Activity都是独一无二的,就是说同一个Activity实例不会重复创建。

singleTask 我觉得是个怪胎,A页面 设置了singleTask ,B页面同时也设置了singleTask ,问题来了,是不是如上所说同一个Activity实例不会重复创建???
其实是这样的,如果该Activity设置了这种launchMode,那么该Activity没有创建一切都好,但是如果已经创建,该Activity比较霸道,会将堆栈来个釜底抽薪,凡是覆盖在其上层的Activity都会被销毁。

A 页面先设置的 singleTask B页面 就算你设置了singleTask 也和普通的启动模式一样。(这里只是说 A ->B )

当B 执行Finsh() 时候 A页面 onRestart-> onStart-> onResume-> onPostResume. B页面 onStop-> onDestroy
注意顺序 先执行A页面的逻辑 在结束掉B

当B 执行startActivity()时候 A页面 onNewIntent-> onRestart-> onStart-> onResume-> onPostResume. B页面 onStop-> onDestroy
注意顺序 先执行A页面的逻辑 在结束掉B A页面多了 onNewIntent 这个方法 B页面还是被kill 了
嗯 是这样的 。8

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容