Android基础:Activity的四种启动模式

一、概论

在多Activity开发中,一般我们需要在不同的Activity之间跳转,有时候我们希望点击返回键或者finish掉当前Activity时,能够回退到上一个Activity;有时候我们又希望在打开Activity时,不会创建多个Activity实例。这时,我们就需要用到Activity的启动模式来达到我们想要的目的。

二、任务栈

提到Activity的启动模式有必要先简单谈谈任务栈。

1.当应用程序一启动时,系统给它提供了一个任务栈,主要用来存储Activity对应的实例对象;

2.默认的是:每打开一个界面都会在任务栈中放入一个对应的Activity实例任务,关闭一个界面时就会从任务栈移除该界面对应的Activity实例任务,当前所有的界面都关闭掉了,任务栈也就被移除空了,应用程序也随着退出。

3.任务栈是先进后出结构的,也就是说最先放入任务栈中的Activity会最后被移除,也就是说最先打开的Activity会最后被关闭掉。就跟在弹夹中塞入子弹一样,最先塞入弹夹的肯定最后一发被打出。

三、Android的启动模式

Android的启动模式有四种:standard、singleTop、singleTask、singleInstance

1.standard 默认模式

点击按钮开启Activity时,每次都会创建新的Activity对象放入任务栈中;当点Android设备的返回键时,可以看到刚才创建Activity实例的倒序依次出现。

2.singleTop 单一顶部模式

如果任务栈的栈顶存在这个要开启的Activity对应的任务,不会再重新创建这个Activity, 而是复用已经存在的Activity。

3.singleTask 单一任务模式

在当前任务栈里面只能有一个这样的Activity实例存在,当开启activity的时候, 就去检查在任务栈里面是否有实例已经存在, 如果有实例存在就复用这个已经存在的activity, 并且把这个activity上面的所有的别的activity都清空,保证整个任务栈里面只有一个任务存在。

4.singleInstance 单一实例模式

这个启动模式非常特殊, activity会运行在自己的任务栈里面, 并且这个任务栈里面只有一个实例存在。

应用场景:在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问,而不是重新打开一个,此模式会节省大量的系统资源。

四、启动模式的配置方式

我们都知道,Activity需要在AndroidManifest.xml文件中配置才能使用,启动模式在我们配置Activity的时候也可以配置在AndroidManifest.xml文件中。例如:




standard是Activity的默认启动模式,无需配置;其他的启动模式对应的配置为:

android:launchMode="singleTop"

android:launchMode="singleTask"

android:launchMode="singleInstance"



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值