4.4 Activity的4种加载模式


在AndroidManifest.xml中配置Activity时,可以配置android:launchMode,该属性支持用于配置Activity的加载模式,支持4个属性值:

  • standard:标准模式,默认的加载模式。
  • singleTop:Task栈顶单例模式。
  • singleTask:Task内单例模式。
  • singleInstance:全局单例模式。

Android采用Task来管理多个Activity,当我们启动一个应用时,Android就会为之创建一个Task,然后启动这个应用的入口Activity。我们可以将Task理解为Activity栈,Task以栈的形式来管理Activity:先启动的Activity被放在Task栈底,后启动的Activity被放在Task栈顶。但是Android并没有为Task提供API,所以我们不能真正访问Task,只能调用Activity的getTaskId()方法来获取Activity所在的Task的ID。

standard模式

每次通过standard模式启动目标Activity时,Android总会为目标Activity创建一个新的实例,并将该Activity添加到Task栈中——这种模式下不会启动新的Task,新Activity将被添加到原有的Task中。

singleTop模式

与standard模式类似,不同的是,当将要启动的目标Activity位于Task栈顶时,系统不会重新创建目标Activity的实例,而是直接复用已有的Activity实例。

singleTask模式

使用singleTask模式可以保证在用一个Task内只有一个实例。
在该模式下启动目标Activity时,如果目标Activity不存在,则创建目标Activity并添加到Task栈顶;如果目标Activity存在且位于Task栈顶,则不会创建目标Activity;如果目标Activity存在但不位于Task栈顶,则将位于目标Activity之上的所有Activity移出Task栈,从而使得目标Activity位于栈顶。

singleInstance模式

该模式下启动目标Activity时有两种情况:

  • 如果目标Activity不存在,系统会先创建一个全新的Task,在创建目标Activity的实例,并将它放入新的Task栈顶。
  • 如果目标Activity已存在,无论它位于哪个应用程序中、位于哪个Task中,系统都会把该Activity所在的Task转到前台,从而使该Activity显示出来。

因此,采用singleInstance模式加载的Activity总是位于栈顶,且它所在的Task只包含这一个Activity。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值