活动的四种启动模式

standard模式

这种模式是系统的默认模式,每当启动一个新的活动的时候就会返回栈,并且处于栈顶,
那么又会重新创建一个活动,如果是相同的活动的话,那就浪费内存了,举个例子

Intent intent = new Intent(First.this, First.class);
startActivity(intent);

示意图如下:
活动的四种启动模式_第1张图片

这样就会重复,但是下面的singleTop模式就可以避免这种情况!

singleTop模式

singleTop模式可以避免那种情况,它可以判断栈顶是否存在该活动,如果存在的话,不会再创建实例,而是继续使用原来的实例活动,但是此举也有一个缺陷,那就是它只会在栈顶判断是否存,那么在下面这个情况就不可以判断了:

First.java

Intent intent = new Intent(First.this, Second.class);
startActivity(intent);

Second.java

Intent intent = new Intent(Second.this, First.class);
startActivity(intent);

那么系统还是会重新创建一个活动,因为此时栈顶为Second,而不是First
示意图如下:
活动的四种启动模式_第2张图片

接着 继续介绍第三种模式

singleTask模式

singleTask模式可以很好的解决重复 创建栈顶活动问题,它会出栈检查全部是否存在该活动,如果存在,就重新使用原活动。

第二种情况可以解决
示意图如下:

singleInstance

singleInstance模式是四种模式较为复杂的模式,和上述三种模式不同,
被指定为此模式的活动,会独立启用一个新的栈来管理这个活动。

示意图如下:
活动的四种启动模式_第3张图片

2015年8月28日21:50:13

你可能感兴趣的:(安卓)