Android基础:Activity的四种启动模式
Posted 高速蜗牛a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"
以上是关于Android基础:Activity的四种启动模式的主要内容,如果未能解决你的问题,请参考以下文章