-
设置了
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的栈顶。
网友评论