Android launchMode

launchMode需要说下几个概念:
task:可以包含多个不同进程的activity。
activity: 只属于某个进程。

可以通过XML设置的有四种:
standard:默认方式

singleTop:当C设置这个属性 A->B>C 打开C时 还是 A->B>C,会调用onNewIntent();
当C设置这个属性 A->C->B 打开C时 还是 A->C->B->C

singleTask:当taskAffinity相同时,并且C设置这个属性 A->C->B 打开C时 还是 A->C;单独设置taskAffinity无效,走的还是默认的taskAffinity,相当于standard;单独设置singleTask,走的是默认taskAffinity,然后会清除之后的activity。

singleInstance:开发中使用最少,我没有使用过,使用时会新建一个task,并且只有一个实例。

然后是代码通过FLAG 组合设置 组合非常多
常用的有:
FLAG_ACTIVITY_CLEAR_TOP+FLAG_ACTIVITY_SINGLE_TOP 相当于默认taskAffinitysingleTask

单独设置FLAG_ACTIVITY_CLEAR_TOP:A->B-C 打开 B设置属性打开 A->B 重建B

FLAG_ACTIVITY_SINGLE_TOP与xml设置一样
还有很多不一一列举

还有的考点是onNewIntent返回的intent是最新的,但是如果不调用setIntent设置。其他地方getIntent获取的是之前的intent。

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