Activity启动模式
Activity启动模式分为四种,四种都是比较特别的(除了第一种,因为他就是默认的),下面一一的介绍一下。
standard启动模式
这个启动模式就是默认的,我们可以声明,也可以不声明,但在这个地方我还是声明一下来演示怎么声明,其实也很简单在我们的Activity节点中加一个属性,就是:
1 | android:launchMode="standard" |
其实就是一个launchMode的设置,这个模式的特点就是说在这个窗口栈中我们的窗口是一个一个叠加的在上面的完全遵守这个规则。
singleTop启动模式
这个模式有一点点的特殊,就是说如果singleTop的窗口当前为栈顶的话呢,我们在此打开这个singleTop窗口的话呢其实是不创建新的窗口的,就像是我们打开:A->B->B的打开方式,实际上是A->B(B是singleTop),最后一次其实没有打开,但是虽然没有调用onCreate方法,但是我们却调用了别的一个方法:
1 | protected void onNewIntent(Intent intent) { |
就是在我们singleTop在栈顶的时候我们再打开这个窗口我们就会调用这个方法,主要区分是不是重复调用的我感觉。
singleTask启动模式
这个模式也还是比较特殊的,理解起来也比较好理解,比如说我们的打开顺序是这个样子的:A->B->C->B,那么最终是:A->B(B是singleTask),其实就是说我们的singleTask如果在栈中存在了的话呢,我们再次加载他,那么原先在他之上的窗口都将被销毁,然后调用哪个onNewIntent
方法,也还是比较好理解的。
singleInstance启动模式
这个模式最特殊我感觉,就是说我们在这个程序的窗口栈中,那么我们打开这个模式的窗口,这个模式不会加入这个栈中,而是自己重新建一个栈,就他这一个实例。
getTaskId
这个东西就是说用来获取当前窗口栈的编号。