Activity的启动模

四种启动模式:standard,singleTop,singleTask,singleInstance

通过在AndroidManifest.xml的<activity>标签中指定android:launchMode属性来设置启动模式


standard

standard是活动的默认启动模式,我们知道Android是通过栈来管理活动的,而此模式,系统不会验证此活动是否已经存在都会在栈顶创建新的活动实例!

例如:活动本身启动自己,启动了几次我们就要销毁几次才能关闭所有的活动。这些同样的活动在栈中也是有不同的位置名称的,可以确定是新的活动实例。


singleTop

如果指定了singleTop模式,在启动活动时系统会检测栈顶是否已经有该活动,如果有则直接使用,并不会创建新的活动实例了。

但是如果要启动的这个活动实例没有在栈顶位置,此时启动此活动实例的时候还是会重新创建此活动的实例!从他的命名Top就可以看出这个意思!


singleTask

 使用singleTask模式,系统就会检测栈中是否已经有此活动,如果有则直接使用并把这个活动上的所有活动全部清除栈,没有则新建此活动。


singleInstance

singleInstance是最复杂也是最特殊的模式了,如果活动指定了singleInstance模式,那么系统会启用一个新的栈来管理这个活动。(其实如果singleTask模式指定了不同的taskAffinity,系统也会启动新的栈)

如果在工作中需要多个应用来访问此活动实例,就需要用到此模式,其他三种启动模式是无法做到的。因为每个应用都会有自己的栈,同一个活动在不同的栈入栈时肯定会新建实例,从而导致数据不一致。而此模式新建的一个单独的栈来管理此活动,多个应用访问时就会共用同一个栈中实例,并不会新建实例了,从而解决了数据不一致的问题。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值