关于singleTask (LaunchMode随笔)
今天,居然被问起关于singleTask的问题,问题如下: “现在Activity栈里有4个Activity,从栈底到栈顶分别是A->B->C->D,现在从Activity D启动Activity B,问此时的栈情况。” 我居然忘了,只是记得有singleTask/singleTop/singleInstance,又还记得有一个是会把他上面的Activity全部Pop出,自己回到栈顶(殊不知这个现象就是问题的答案),从现象和字面上看来好像是singleTop。 回来之后怒查Google,并写了个小程序实践了下,增强印象,并决定写下Blog以便以后回顾。 现在我们先来复习下,singleTask和singleTop分别是什么样的行为。 > LaunchMode为singleTop 其实singleTop很简单,就是当且仅当Activity在栈顶的时候才会复用(意思就是栈顶绝不会有连续两个该Activity),当Activity不在栈顶的时候都会重新创建的。 同学们可能会纳闷,都在顶部那有什么卵用啊,栈顶不就代表着是手机显示的Activity吗?不是的,其实Android系统中有很多的Task栈的,同个栈里的Activity都是一个Task(Task是个复杂的概念,具体的概念请看官方文档,你可以简单理解为一个任务场景)。 比如: TaskA: (栈底)ActivityA1 ->