• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# PageAbility的启动模式
2
3
4启动模式对应PageAbility被启动时的行为,支持单实例模式、多实例模式两种启动模式。
5
6
7  **表1** PageAbility的启动模式
8
9| 启动模式 | 描述 | 说明 |
10| -------- | -------- | -------- |
11| singleton | 单实例模式 | 每次调用startAbility方法时,如果应用进程中该类型的Ability实例已经存在,则复用已有的实例,系统中只存在唯一一个实例。表现为在最近任务列表中只有一个Ability实例。<br/>典型场景:当用户打开视频播放应用并观看视频,回到桌面后,再次打开视频播放应用,应用仍为回到桌面之前正在观看的视频。 |
12| standard | 多实例模式 | 缺省启动模式。每次调用startAbility方法时,都会在应用进程中创建一个新的Ability实例。表现为在最近任务列表中可以看到有多个该类型的Ability实例。<br/>典型场景:当用户打开文档应用,选择新建文档的时候,每次点击新建文档,都会创建一个新的文档任务,在最近任务列表中可以看到多个新建的文档任务。 |
13
14
15应用开发者可在config.json配置文件中通过“launchType”配置启动模式。示例如下:
16
17```json
18{
19  "module": {
20    ...
21    "abilities": [
22      {
23        // singleton: 单实例模式
24        // standard: 多实例模式
25        "launchType": "standard",
26        ...
27      }
28    ]
29  }
30}
31```
32
33
34启动PageAbility时,对于多实例模式启动,以及单实例模式进行首次启动时,[PageAbility生命周期回调](pageability-lifecycle.md#table13118194914476)均会被触发。单实例非首次启动时不会再触发onCreate()接口,而是触发onNewWant(),onNewWant()的说明如下表2所示。
35
36
37  **表2** 单实例启动模式特有的回调函数说明
38
39| 接口名 | 接口描述 |
40| -------- | -------- |
41| onNewWant(want:&nbsp;Want) | 单实例启动模式,PageAbility非首次启动时调用onNewWant方法,开发者可以在该方法中获取want,进而根据want做进一步处理。例如,单实例PageAbility迁移场景,指定页面拉起PageAbility场景。 |
42