6

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

 9 months ago
source link: https://www.51cto.com/article/776045.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

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

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,每次都创建新的实例

  1. 「singleTop」:
  • 场景:需要频繁跳转到同一个Activity,并且不希望重复创建实例

  • 示例:从Activity A跳转到Activity B,如果Activity B已经位于栈顶,则不创建新实例,直接使用已存在的实例

  1. 「singleTask」:

  • 场景:需要确保整个应用中只有一个该Activity的实例

  • 示例:应用的主界面,或者一个需要独立任务栈的特殊界面

  1. 「singleInstance」:

  • 场景:需要将该Activity放置在一个新的任务栈中,并且确保整个系统中只有一个该Activity的实例

  • 示例:一个需要独立任务栈的特殊界面,比如来电界面或者闹钟提醒界面

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

责任编辑:武晓燕 来源: 沐雨花飞蝶

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK