安卓活动的启动模式

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

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


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值