最新消息:文章中包含代码时,请遵守代码高亮规范!

Activity的四种启动模式

原创文章 user 70浏览 0评论

Android中有四大组件分别是activity、service、content provider、broadcast receiver。其中最关键的就是Activity。因为它是和用户交互最直接,最多的组件。它在Android中就类似于每一个和用户展示的页面。Activity在Android中是使用任务栈来存储创建的Activity实例,任务栈是一种“后进先出”的栈结构。举个例子,若我们多次启动同一个Activity。系统会创建多个实例依次放入任务栈中。当按back键返回时,每按一次,一个Activity出栈,直到栈空为止。当栈中无不论什么Activity。系统就会回收此任务栈。

上面的例子是没有设置启动模式的。这种方式很耗费内存。由此,Android特地为Activity设置了4种启动模式来根据不同场景进行手动切换,以最大化降低每次都要创建Activity的实例,来降低内存的使用。

一、Activity启动模式的概述

Activity有四种启动模式,分别是Standard、SingleTop、SingleTask和SingleInstance。

1)Standard 标准模式

说明:Android创建Activity的默认模式。如果没有设置启动模式,那么默认就是这个启动模式了。它是每次启动Activity都会创建一个新的实例,无论这个实例存不存在。

2)SingleTop 栈顶复用模式

说明:如果创建的Activity已经处于栈顶,那么不会再创建新的实例,会直接复用该实例;如果创建的Activity不处于栈顶,那么会创建一个新的实例入栈,使其处于栈顶,和Standard一样。

3)SingleTask 栈内复用模式

说明:如果创建的Activity已经处于栈中,那么不会再创建新的实例了。而是将存在栈内的这个Activity的实例以上的Activity全部销毁,使其处于栈顶。

4)SingleInStance 单实例模式

说明:从名字也可以看出。创建的Activity都会创建一个新的栈,并使其实例处于单独的栈中。

二、启动模式的使用

Android中Activity如果要使用的话,是必须要在AndroidManifest中进行配置。

1)在配置文件中进行设置

举个例子:

<activity android:name="..activity.MainActivity" android:launchMode="singleTask"/>

2)在使用Intent启动Activity的时候:

Intent intent = new Intent();
intent.setClass(context,MainActivity.class);
intent.addFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);

其中的Flag有FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP。

FLAG_ACTIVITY_NEW_TASK:”SingleTask”启动模式;

FLAG_ACTIVITY_SINGLE_TOP:”SingleTop”启动模式;

还有两种不常用,这里不过多介绍。

三、总结

总的来说,四种启动模式,在实际过程中,都可能会用到。其中比较常用的是Standard、SingleTask。具体的情况得根据实际的开发情况,进行切换。

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25303.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我

发表我的评论
取消评论

表情