android activity的4种启动模式

在AndroidMainfest.xml文件配置activity节点时,可以指定Activity的启动模式属性,android:launchModel 属性 ,可以指定四种启动模式:

中文名字是我自己根据他的特称和理解定义的。


分别是:standard  基本启动模式  (默认)

singleTop 栈顶单例启动模式 

singleTask 任务单例启动模式

singleInstace 单实例启动模式

Standard:

应用程序中,每启动一个活动,都会在返回栈顶。如果我们为FirstActivity 创建一个按钮,通过Intend启动一个FirstActivity 程序会为我们创建新的Activity 放入栈顶,如图所示。 这种启动模式是默认的。

singleTop

如果在AndroidMainfest.xml 中的FirstActivity android:launchModel指定为singleTop,这时在上一个测试中,由于FirstActivity处于栈顶的位置,程序就不会创建一个新的Activity 。   如果进入了一个SecondActivity ,当SecondActivity处于栈顶的时候,在SecondActivity中通过Intent启动FirstActivity时 ,由于FirstActivity 并未处于栈顶,则会创建一个新的Activity 如图



活动处于栈顶的时候,就是单例的。如果活动并未处于栈顶,则就要像standard一样 创建一个新的Activity。正如名字singleTop一样。


singleTask:

会想到,如果要是整个任务中的几个活动都不能重复,该如何设定,sinleTask就是这么一种模式,在启动活动的时候,系统会检查返回栈中的活动实例是否已经存在,如果存在,那个实例上的活动全部弹栈,启动那个活动,不会创建一个新的活动。

如图:

个SingleTask名字让我有些疑惑,Task是一些活动的集合,那么一个程序中会有多个Task么,根据我自身的基本意识,觉得程序当中肯定会有多个Task。但是这个模式又是说程序会检查整个返回栈中是否有重复,那么这个名字是否应该定义成singleStack呢。 有些疑惑,初学。


singleInstance

活动是可以被多个应用程序共享,当其他应用程序需要调用本应用程序中的活动的时候,就可以将Activity设置为共享Activity 为这个Activity 单独的创建一个返回栈。这个返回栈是多个应用程序共享的。我们可以通过getTaskId()方法得到当前的返回栈的ID,就可以去区分当前的Activiyt所在的栈是哪个。


上图:











参考图书:

《第一行代码》 人民邮电出版社







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值