Android launchMode

在Intent 对象中一共有4种加载模式activity flags(FLAG_ACTIVITY.* 常量)来决定当处理一个intent操作的时候activity应该怎么展现
它们是:
“standard”
“singleTop”
“singleTask”
“singleInstance”
默认的是 “standard”.
就像下面列表展示的,加载模式分为两大类,一类是”standard” 和 “singleTop” 另一类是”singleTask” 和 “singleInstance”.
以”standard” 和 “singleTop”方式启动的可以被实例化很多次,这类activity可以隶属于任何一个task同时可以属于一个activity栈的任何位置,通常它们被startActivity()启动(除非 Intent对象里边包含FLAG_ACTIVITY_NEW_TASK 操作,这种会开启一个不一样的task)
相反的”singleTask” 和 “singleInstance” activities 可以开启一个task.它们通常在这个activity stack的根部,并且,一个设备在一个这样的task一次只能有一个这个activity的实例

“standard” 和 “singleTop”加载模式在某些方面是有区别的:每一次一个 “standard”的activity对于一个新的intent,总会创建一个新的实例来回应对应的intent,每一个实例都会对应单独的intent,类似的,一个”singleTop” 的activity对于一个新的intent也可能会创建一个新的实例,但是如果目标任务已经存在栈顶,那么栈顶的实例将会接收这个新的intent(会调用onNewIntent),并且不会创建新的实例。其它情况下,比如,如果已经存在的一个”singleTop” activity在目标task上,但是没有在栈顶或者是它在任务栈顶,但是不是目标task,这种情况都会重新创建实例并把它压入栈

“singleTask” 和 “singleInstance” 同样在一些方面是有区别的:一个”singleTask” activity允许其它的activities 作为task的一部分,它总是处于栈底,但是其它activities(“standard” 和 “singleTop” activities)可以启动在它的task里,但是”singleInstance” activity,不允许其它任何activities作为它的一部分,在它的任务栈只有它一个实例,如果它start别的activity,那么启动的activity将会被分配到另外的一个task里边(就好像FLAG_ACTIVITY_NEW_TASK 的intent一样)
4种启动模式表格图
就像上面列表展示的,standard 是默认并且大部分activities采用的方式,SingleTop对于很多activities也是比较常用并且好用的加载模式。其它模式比如”singleTask” 和 “singleInstance” 对于很多应用来说是不合适的,因为它们可能会导致一个跟其它的应用都不一样的用户不熟悉的交互类型

不管你最后选择的哪种启动模式,请确保activity的启动、导航返回、返回键返回等的可用性

官方链接:
http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值