安卓活动的启动模式

来源:互联网 发布:什么软件买东西便宜 编辑:程序博客网 时间:2024/06/06 05:25

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

示意图如下:
这里写图片描述