Activity launchMode="SingleTaks"的秘密

看了老罗的文章记录下 链接地址


  1. 设置了"singleTask"启动模式的Activity,它在启动的时候,会先在系统中查找属性值affinity等于它的属性值taskAffinity的任务存在;如果存在这样的任务,它就会在这个任务中启动,否则就会在新任务中启动。因此,如果我们想要设置了"singleTask"启动模式的Activity在新的任务中启动,就要为它设置一个独立的taskAffinity属性值。

    2. 如果设置了"singleTask"启动模式的Activity不是在新的任务中启动时,它会在已有的任务中查看是否已经存在相应的Activity实例,如果存在,就会把位于这个Activity实例上面的Activity全部结束掉,即最终这个Activity实例会位于任务的堆栈顶端中。



为此,要达到在新的Task中启动Activity,我们需要做的是:设置要启动Activity的launchMode为"singleTask",并且调用startActivity时不要求返回要启动的Activity的执行结果时,还有就是,只要当前系统不存在affinity属性值等于即将要启动的Activity的taskAffinity属性值的任务就可以了。


你可能感兴趣的:(Activity launchMode="SingleTaks"的秘密)