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的四种启动模式的主要内容,如果未能解决你的问题,请参考以下文章

Android 中Activity的四种启动模式

Android的四种启动模式

Android之Activity系列总结--Activity的四种启动模式

Activity的四种启动模式

Activity的四种启动模式

activity的四种启动模式详细分析