模式介绍
Activity的启动模式是指在启动一个新的Activity时,该Activity如何与任务栈中的其他Activity进行交互的规则。Android中有四种主要的Activity启动模式,它们分别是:
-
standard(标准模式):每次启动一个Activity时,系统都会创建一个新的实例,并放入任务栈中。无论这个Activity是否已经存在,都会创建一个新的实例。
-
singleTop(单顶部模式):当启动的Activity已经位于任务栈的顶部时,不会创建新的实例,而是直接使用已经存在的实例。如果不位于顶部,则会创建新的实例。
-
singleTask(单任务模式):系统会检查任务栈中是否已经存在该Activity的实例,如果存在,则将该实例之上的所有Activity移出栈,使得该实例成为栈顶。如果不存在,则会创建一个新的实例。
-
singleInstance(单实例模式):该模式下的Activity会单独放在一个新的任务栈中,且该任务栈中只有这一个Activity。其他应用无法与其共享任务栈。
启动模式可以通过在AndroidManifest.xml文件中的
设置方式
「静态方式:」
通过在AndroidManifest.xml文件中的
<activity
android:name=".MainActivity"
android:launchMode="singleTask">
</activity>
「动态方式:」
通过设置启动的Activity的flag制动启动模式
Intent intent = new Intent();
intent.setClass(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
使用场景
-
「standard」:
-
场景:一般的应用程序界面跳转 -
示例:从一个Activity跳转到另一个Activity,每次都创建新的实例 -
「singleTop」:
-
场景:需要频繁跳转到同一个Activity,并且不希望重复创建实例 -
示例:从Activity A跳转到Activity B,如果Activity B已经位于栈顶,则不创建新实例,直接使用已存在的实例 -
「singleTask」:
-
场景:需要确保整个应用中只有一个该Activity的实例 -
示例:应用的主界面,或者一个需要独立任务栈的特殊界面 -
「singleInstance」:
-
场景:需要将该Activity放置在一个新的任务栈中,并且确保整个系统中只有一个该Activity的实例 -
示例:一个需要独立任务栈的特殊界面,比如来电界面或者闹钟提醒界面
这些启动模式可以根据应用的需求来灵活选择,以达到最佳的用户体验和应用性能。
原文始发于微信公众号(沐雨花飞蝶):Android中的Activity启动模式,你了解多少?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/255744.html