Activity的启动模式

基本介绍

启动模式(LaunchMode)在多个Activity跳转之间扮演着重要的角色,他决定是否生成一个新的实例,是否重用已经存在的实例,是否和其他activity实例放在同一个task中。

task:android使用任务(task)来管理活动,一个任务就是一组放在栈中的集合,这个栈也被称为返回栈(Back Stack)

栈是一种先进后出的数据结构,默认情况下,当我们启动了一个新的activity时,他便会入栈,并且放在栈顶,当我们按下Back键或者调用finish()方法去销毁一个activity时,栈顶的activity会被移除,栈的前一个activity就会处于栈顶的位置,android总是将栈顶的activity显示给用户。

activity有四种启动模式:standard、singleTop、singleTask、singleInstance。可在manifest文件中通过给activity标签指定 android:launchMode属性来设置启动模式。

standard

standard模式是activity默认的启动模式,当没有指定启动模式时,activiyt便会默认使用这种启动模式。在standard模式下,每当启动一个activity时,系统不会在乎你的Back Stack中是否已经有这个activity实例,每次都会创建一个这个Activity的新的实例。

singleTop

当启动模式指定为singleTop时,在启动活动时,系统会检查Back Stack的栈顶是否是该活动,如果是的话就直接使用该实例,不会在创建新的实例。

singleTask

singleTop可以很好的解决重复创建栈顶activity的问题,但是当activity不是处于栈顶时,还是可能创建多个实例的。这时候就需要用到singleTask模式了。在singleTask模式下,每当启动活动时,系统会检查返回栈中是否存在该活动,如果存在直接使用该实例,并把处于该活动只上的活动通通出栈,使该活动位于栈顶。如果返回栈中不存在该活动的实例,系统就会创建一个新的活动实例。

如果为activity指定了taskAffinity属性,系统将会启动一个新的返回栈来管理这个活动。

singleInstance

与其他三种启动模式不同的是,指定为singleInstance模式的activity,启动时系统会启用一个新的返回栈来管理这个活动。假设一个场景,我们的程序中有一个activity是允许其他应用调用的,如果我们想实现其他应用程序和我们的程序可以共享这个活动实例。前面的三种启动模式就不适用了,因为每个活动都有自己的返回栈,同一个活动在不同的返回栈肯定是不同的实例,而启用singleInstance模式就可以解决这个问题,在这种模式下,系统会有一个单独的返回栈lai’guan’li这个活动,不管是自己的应用程序还是别的程序来访问这个活动时,都是公用的一个返回栈,这样就解决了不同程序共享活动的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值