Activity launchMode="SingleTaks"的秘密

来源:互联网 发布:sql优化书籍推荐知乎 编辑:程序博客网 时间:2024/06/09 22:15

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


  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属性值的任务就可以了。


0 0
原创粉丝点击