UIAbility组件启动模式

468 阅读2分钟

UIAbility组件启动模式,开源鸿蒙OpenHarmony和华为鸿蒙HarmonyOs描述不一样,究竟以哪个为准?不知道后面会不会统一……。不管怎样,对这四种启动模式的理解,对应用开发颇为重要。

image.png

1.开源鸿蒙OpenHarmony中:

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

2.而华为鸿蒙HarmonyOS中:

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

3.启动模式学习:

  • singleton 默认的启动模式。每次调用方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例,此时只会进入该UIAbility的onNewWant()回调,不会进入其和生命周期回调。。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。
  • standard(multiton) 每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。这种情况下可以将UIAbility配置为standard(标准实例模式)。亲测在API9中同一个页面最多能打开2个,也即任务栏中最多显示两个
  • specified specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)。

在UIAbility实例创建之前,允许开发者为该实例创建一个唯一的字符串Key,创建的UIAbility实例绑定Key之后,后续每次调用startAbility()方法时,都会询问应用使用哪个Key对应的UIAbility实例来响应startAbility()请求。运行时由UIAbility内部业务决定是否创建多实例,如果匹配有该UIAbility实例的Key,则直接拉起与之绑定的UIAbility实例,否则创建一个新的UIAbility实例。

4.UIAbility启动模式的配置

{
  "module": {
    ...
    "abilities": [
      {
        "launchType": "specified",
        ...
      }
    ]
  }
}