Android中的Activity启动模式,你了解多少?

模式介绍

Activity的启动模式是指在启动一个新的Activity时,该Activity如何与任务栈中的其他Activity进行交互的规则。Android中有四种主要的Activity启动模式,它们分别是:

  1. standard(标准模式):每次启动一个Activity时,系统都会创建一个新的实例,并放入任务栈中。无论这个Activity是否已经存在,都会创建一个新的实例。

  2. singleTop(单顶部模式):当启动的Activity已经位于任务栈的顶部时,不会创建新的实例,而是直接使用已经存在的实例。如果不位于顶部,则会创建新的实例。

  3. singleTask(单任务模式):系统会检查任务栈中是否已经存在该Activity的实例,如果存在,则将该实例之上的所有Activity移出栈,使得该实例成为栈顶。如果不存在,则会创建一个新的实例。

  4. singleInstance(单实例模式):该模式下的Activity会单独放在一个新的任务栈中,且该任务栈中只有这一个Activity。其他应用无法与其共享任务栈。

启动模式可以通过在AndroidManifest.xml文件中的标签的android:launchMode属性来指定。不同的启动模式可以满足不同的业务需求,例如在需要单例模式的场景下可以使用singleInstance启动模式。

设置方式

「静态方式:」

通过在AndroidManifest.xml文件中的标签中设置android:launchMode属性来设置Activity的启动模式。

<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); 

使用场景

  1. 「standard」

    • 场景:一般的应用程序界面跳转
    • 示例:从一个Activity跳转到另一个Activity,每次都创建新的实例
  2. 「singleTop」

    • 场景:需要频繁跳转到同一个Activity,并且不希望重复创建实例
    • 示例:从Activity A跳转到Activity B,如果Activity B已经位于栈顶,则不创建新实例,直接使用已存在的实例
  3. 「singleTask」

    • 场景:需要确保整个应用中只有一个该Activity的实例
    • 示例:应用的主界面,或者一个需要独立任务栈的特殊界面
  4. 「singleInstance」

    • 场景:需要将该Activity放置在一个新的任务栈中,并且确保整个系统中只有一个该Activity的实例
    • 示例:一个需要独立任务栈的特殊界面,比如来电界面或者闹钟提醒界面

这些启动模式可以根据应用的需求来灵活选择,以达到最佳的用户体验和应用性能。


原文始发于微信公众号(沐雨花飞蝶):Android中的Activity启动模式,你了解多少?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/255744.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!