Android四大启动模式

为什么android中需要Activity的启动模式呢?个人感觉,默认情况下当android的activity被创建实例的时候,系统会将activity把该实例放入任务栈里,新的实例会在旧的实例上面,这不难理解,但是,每一次启动同一个activity的时候,系统也会新建一个实例,这很明显不符合我们的需求,所以Google方面给android提供了四种activity的启动方式,下面我就按照我的理解来简单说明一下。

一、standard:标准模式,也就是我们平常开发中系统默认的一种启动模式。
    在standard模式下,每次启动一个Activity都会重新创建一个实例,不管该实例是否已经存在。在正常的Activity生命周期中,每一次实例的创建,它的onCreate、onStart、onResume都会被调用。这也导致了所属于该任务栈中很可能存在着多个同一个Activity,虽然只是实例不一样,但有时候我们确实不需要这样,所以出现了一下的三种启动模式。
二、singleTop:栈顶复用模式。
    在这种模式下,如果新的Activity已经位于该栈的栈顶,那么该Activity不会被重新创建。而是直接复用已经存在的Activity。如下图所示:
     ![A、B、C、D代表4个Activity](https://img-blog.csdn.net/20161121002739184)
    其中在栈顶中已经存在着一个D,但是当新启动同一个D的时候,由于D已经设置启动模式为singleTop,所以在创建之前,会检查栈顶中是否已经存在同义D,如果存在则会复用旧的而不会新建一个D的实例。所以最后的情况会保持之前的不变,也是ABCD这样。
三、singleTask:栈内复用模式。
   有点像单例模式,在创建新的Activity的时候,也会检查栈内是否已经存在Activity,与singleTop不一样的是,在于Top与Task二字的差异,也就是说,singleTop模式只会检查栈顶,但是不在栈顶的Activity则不会检查,所以singleTask就是解决这样的一个尴尬的问题,它会检查栈内的Activity,而不管是否在栈顶。如果存在就复用,否则新建。图片就不贴了,应该比较容易理解。
 四、singleInstance:单实例模式。
    可以说是singleTask加强版,它也会检查栈内的Activity是否存在,不同点的是,前面几种模式都是在同一个栈而言的,而singleInstance则会新建一个栈来保存新建的Activity实例。也就是说该栈中只有它自己的一个实例。否则复用已经存在的Activity实例。
 虽然上面简单说明了四种启动模式,但是这里况需要特别的说明一下的是,Activity的启动模式并不像上面说的那么简单,需要考虑具体情况,这里就不详细说明了,需要自己多敲代码来体会,目前我还在摸索阶段,希望哪天会有人告诉我一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值