Activity启动模式singleTask的理解

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

  2. 如果设置了singleTask启动模式的act是在已有task中启动的,系统会在此task中查看是否存在这个act的实例,如果没有的话,会简单创建并加进去,否则并不会创建此act的新实例,而是已有实例的onNewIntent(Intent)方法会被调用(紧接着的是onResume方法),并且在此act之上的所有别的act都会出栈,走完整的销毁流程,即他们的onDestroy()之类的方法会被调用,从而确保这个singleTaskact的实例此时位于task的栈顶。

你可能感兴趣的:(Activity启动模式singleTask的理解)