您的位置:首页 > 其它

Activity启动模式singleTask的理解

2016-04-27 20:17 211 查看
设置了
singleTask
启动模式的Activity,它在启动的时候,系统会先查找有没有
taskAffinity
属性值相同的task存在。如果存在这样的task,就会在这个task中启动;否则就会在新task中启动。因此如果我们想要设置了
singleTask
启动模式的act在新的task中启动,就要为它设置一个独特的
taskAffinity
属性值,因为默认一个app的所有act都有同一个
taskAffinity
值,那就是应用包名。

如果设置了
singleTask
启动模式的act是在已有task中启动的,系统会在此task中查看是否存在这个act的实例,如果没有的话,会简单创建并加进去,否则并不会创建此act的新实例,而是已有实例的
onNewIntent(Intent)
方法会被调用(紧接着的是onResume方法),并且在此act之上的所有别的act都会出栈,走完整的销毁流程,即他们的
onDestroy()
之类的方法会被调用,从而确保这个
singleTask
act的实例此时位于task的栈顶。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: