Activity的四种加载模式

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到 原来某个Activity实例,而不是产生大量重复的Activity。

这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。

加载模式分类及在哪里配置

Activity有四种加载模式:

  • standard
  • singleTop
  • singleTask
  • singleInstance

设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性:

<activity android:name="ActB"android:launchMode="singleTask"></activity>

也可以在Eclipse ADT中图形界面中编辑:

区分Activity的加载模式,通过示例一目了然。这里编写了一个Activity A(ActA)和ActivityB(ActB)循环跳转的例子。对加载模式修改和代码做稍微改动,就可以说明四种模式的区别。

Standard

       首先说standard模式,也就是默认模式,不需要配置launchMode。该模式每次建立一个Activity时都重新创建一个实例。

SingleTop

singleTop和standard模式,都会将intent发送新的实例(后两种模式不发送到新的实例,如果已经有了的话)。不 过,singleTop要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例。

singleTop模式,可用来解决栈顶多个重复相同的Activity的问题。

SingleTask

singleTask模式和后面的singleInstance模式都是只创建一个实例的。

当intent到来,需要创建singleTask模式Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接 将intent发送给它。


如上图,建立Activity A,在A 中建立B,B中建立C,建立顺序用实线箭头标出。此时如果按回退键,则跳到了B,再按回退键,跳到A。回退顺序用虚线箭头标出。

SingleInstance

singleInstance模式下的Activity单独在一个task栈中。这个栈只有 一个Activity。

和上面的图比较这时B采用的是singleInstance模式,同样建立A,在A 中建立B,B中建立C。如果此时回退,则会先从C回退到A,再从A回退到B,回退顺序如图中虚线箭头所示。


原因是此时B和A、C不在同一个栈中,所以此时C要先回退到本栈的上下文当中,然后再将Task1栈移开,这时才显出Task2中的B。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值