Android学习之旅

Android launchMode

2019-10-17  本文已影响0人  pj0579

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。

上一篇 下一篇

猜你喜欢

热点阅读