HarmonyOS鸿蒙Next中Ability是否支持不同的启动模式?

HarmonyOS鸿蒙Next中Ability是否支持不同的启动模式? 作为一个原来的 Android 开发者, 对于一个 Activity 的 launchMode 非常熟悉.

不知道在 HarmonyOS NEXT 应用中, 不知道对于一个 Ability 是否有这种可以声明 Ability 启动类型/启动模式的概念?

毕竟, 对于相对的界面在应用中从多个不同的页面进行打开, 该页面是否重新创建以及如何响应最新数据, 还是挺关键的一项能力?

3 回复

UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态。针对不同的业务场景,系统提供了三种启动模式:

singleton(单实例模式):singleton启动模式为单实例模式,也是默认情况下的启动模式。每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。

multiton(多实例模式):multiton启动模式为多实例模式,每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型UIAbility实例

specified(指定实例模式):specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)。

原理性的可以看下这个: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/uiability-launch-type-V5

更多关于HarmonyOS鸿蒙Next中Ability是否支持不同的启动模式?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Ability确实支持不同的启动模式。Ability是鸿蒙系统中应用的基本组成单元,负责处理用户界面和业务逻辑。鸿蒙Next提供了多种启动模式来满足不同的应用场景需求,主要包括以下几种:

  1. Standard模式:这是默认的启动模式。每次启动Ability时,系统都会创建一个新的实例。适用于需要多个实例的场景。

  2. SingleTop模式:如果目标Ability已经位于任务栈的顶部,系统不会创建新的实例,而是复用现有的实例,并调用其onNewIntent方法。适用于需要避免重复创建实例的场景。

  3. SingleTask模式:系统会确保目标Ability在任务栈中只有一个实例。如果目标Ability已经存在于任务栈中,系统会将其上方的其他Ability全部出栈,并将目标Ability置于栈顶,同时调用其onNewIntent方法。适用于需要全局唯一实例的场景。

  4. SingleInstance模式:目标Ability会在一个独立的任务栈中运行,且该任务栈中只会有这一个Ability实例。适用于需要完全隔离的场景。

这些启动模式通过Ability的launchMode属性进行配置,开发者可以根据具体需求选择合适的启动模式。

是的,HarmonyOS鸿蒙Next中的Ability支持多种启动模式。常见的启动模式包括:

  1. 单例模式(Singleton):系统内同一类型的Ability只有一个实例,重复启动时复用现有实例。
  2. 标准模式(Standard):每次启动都会创建一个新的Ability实例。
  3. 单任务模式(SingleTask):系统内同一类型的Ability只有一个实例,启动时会清除任务栈中该Ability之上的所有实例。
  4. 单实例模式(SingleInstance):每个Ability实例独占一个任务栈,适用于独立运行的场景。

这些启动模式通过配置Ability的launchType属性实现,开发者可根据需求选择合适的模式。

回到顶部