android 启动模式

启动模式是通过在AndroidManifest.xml中activity标签中的launchMode设置的

android:launchMode指示应该如何加载一个activity.总共有四种启动模式,他们一般配合activity启动标记(FLAG_ACTIVITY_*常量)一起使用来决定当加载一个actiity时,系统该如何处理这个Intent.这四个启动模式依次是:

"standard" 
"singleTop" 
"singleTask" 
"singleInstance"

缺省的是"standard" 

正如在下表中将会看到的一样,这些启动on个模式被划分成两个组,"standard" 和"singleTop"一组,"singleTask" 和"singleInstance"属于另外一个组。以"standard" 或"singleTop"方式启动的activity可以被实例化很多次,他们的实例也可以属于任何 task,可以放在栈中的任何位置,典型的,他们一般通过 startActivity() 来加载到task中(除非启动 Intent设置了FLAG_ACTIVITY_NEW_TASK标记,在这种情况下会选进入一个不同的task--查看taskAffinity属性)

"standard" 和"singleTop"在一个方面不一样,如果是以"standard"方式启动的activity,每次都会实例化一个新的activity实例,每个实例对应一个Intent,类似的,"singleTop" 启动的activity也可能创建一个新的实例来处理相应的Intent,但是,如果目标task栈顶的activity正是要启动的activity,这个时候不会像"standard" 模式一样重新创建一个该activity实例,二十调用该activity的onNewIntent()方法。在其他情况下,例如"singleTop" 模式的activity已经在目标task中,但不是在栈顶,或者已经在栈顶,但不是在目标task中,这个时候,会像"standard" 模式一样创建一个该activity的新实例。

"singleTask" 和"singleInstance"两者也略有区别,一个"singleTask" 模式的activity允许其他的activity加入到他的task中,他永远是该task的root activity,但其他activity可以加载到该task中,相反,一个"singleInstance"模式的activity独占一个task,不运行其他的task加入到里面,如果从中启动activity,这个activity被安排到一个不同的task中,就像使用了FLAG_ACTIVITY_NEW_TASK一样。


就像上表中展示的一样,"standard"是缺省的模式,对于大部分activity来说它都是合适的模式,“singleTop”也是一个非常普遍且有用的模式对大多数activity.另外两中模式:“singleTask”和"singleInstance"对于大多数应用程序来说使用不多。因为他们会导致的交互模式对用户来说不太熟悉,和其他的应用程序相比也很不同。

不管你选择那种模式,确保测试一下activity的正确性 当加载它的时候或者从其他activity或者返回按钮导航到它时。



















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值