Activity的四种启动模式

配置Activity时可指定android:launchMode 属性,该属性用于配置该Activity的加载模式。该属性支持以下4个属性值。

> standard:标准模式,这是默认的加载模式。

> singleTop:Task栈顶单利模式。

> singleTask:task内单例模式。

> singleInstance:全局单例模式。


先介绍一下啊Android对Activity的管理。Android 采用Task来管理多个Activity,事实上,我们可以把Task理解为Activity栈,Task以栈的形式来管理Activity:先启动的Activity会被放在Task的栈底,后启动的被放在Task的栈顶。

那么Activity的加载模式,就负责管理实例化、加载Activity的方式,并可以控制Activity与Task之间的加载关系。

下面详细介绍这4种启动模式。

1.standard模式

如果没有在AndroidManifest文件中配置Activity的launchMode属性,该Activity默认采用standard的启动方式。

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


2.singleTop模式

这种模式与standard模式基本相似,但有一点不同:当将要启动的目标Activity已经位于Task栈顶时,系统不会ch重新创建目标Activity的实例,而是直接复用已有的Activity的实例。

如果要启动的目标Activity没有位于Task栈顶,此时系统会重新创建目标Activity的实例,并将它加载到Task栈顶--此时与standard模式完全形同。


3.singleTask模式

采用这种加载模式的Activity在同一个Task内只有一个实例,当采用singleTask模式启动Activity时,可以分为如下三个情况。

>如果将要启动的目标Activity不存在,系统将会创建目标Activity的实例,并将它加入Task栈顶。

>如果将要启动的目标Activity已经存在于Task的栈顶,此时与singleTop模式的行为相同。

>如果将要启动的目标Activity已存在、但没有位于Task栈顶,系统将会把位于该Activity上面的所有的Activity移出Task栈,从未使目标Activity转入栈顶。


4.singleInstance

在这种启动模式下,系统保证无论从哪个task中启动目标Activity,只会创建一个目标Activity实例,并会使用一个全新的Task栈来加载该Activity实例。

当系统使用singleInstance模式启动目标Activity的时候,可以分为两种情况。

>如果要启动的目标Activity不存在,系统将先创建一个全新的Task,在创建目标Activity的实例,并将它加入新的Task栈顶。

>如果要启动的目标Activity已经存在,无论它位于哪个应用程序中、位于哪个Task栈中,系统都会把该Activity所在的Task转到前台,从而使该Activity显示出来。

需要指出的是,采用singleInstance模式加载Activity总是位于Task的栈顶,且采用singleInstance模式加载的Activity所在Task将只包含该Activity。





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值