standard模式
这种模式是系统的默认模式,每当启动一个新的活动的时候就会返回栈,并且处于栈顶,
那么又会重新创建一个活动,如果是相同的活动的话,那就浪费内存了,举个例子
Intent intent = new Intent(First.this, First.class);
startActivity(intent);
示意图如下:
这样就会重复,但是下面的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
示意图如下:
接着 继续介绍第三种模式
singleTask模式
singleTask模式可以很好的解决重复 创建栈顶活动问题,它会出栈检查全部是否存在该活动,如果存在,就重新使用原活动。
第二种情况可以解决
示意图如下:
singleInstance
singleInstance模式是四种模式较为复杂的模式,和上述三种模式不同,
被指定为此模式的活动,会独立启用一个新的栈来管理这个活动。
示意图如下: