• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.AbilityConstant (AbilityConstant)
2
3AbilityConstant提供UIAbility相关的枚举,包括设置初次启动原因、上次退出原因、迁移结果、窗口类型等。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> - 本模块接口仅可在Stage模型下使用。
10
11## 导入模块
12
13```ts
14import { AbilityConstant } from '@kit.AbilityKit';
15```
16
17## LaunchParam
18
19启动参数。Ability启动时由系统自动传入,开发者无需修改。
20
21**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
22
23| 名称 | 类型 | 只读 | 可选 | 说明 |
24| -------- | -------- | -------- | -------- | -------- |
25| launchReason | [LaunchReason](#launchreason)| 否 | 否 | 枚举类型,表示启动原因。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
26| launchReasonMessage<sup>18+</sup> | string | 否 | 是 | 表示启动的详细原因。<br>**原子化服务API**:从API version 18开始,该接口支持在原子化服务中使用。 |
27| lastExitReason | [LastExitReason](#lastexitreason) | 否 | 否 | 枚举类型,表示最后退出原因。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
28| lastExitMessage<sup>12+</sup> | string | 否 | 否 | 表示最后退出详细原因。<br>**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。 |
29| lastExitDetailInfo<sup>18+</sup> | [LastExitDetailInfo](#lastexitdetailinfo18) | 否 | 是 | 表示最后退出时的进程状态和详细原因。<br>**原子化服务API**:从API version 18开始,该接口支持在原子化服务中使用。 |
30
31## LaunchReason
32
33Ability初次启动原因,该类型为枚举,可配合UIAbility的[onCreate(want, launchParam)](js-apis-app-ability-uiAbility.md#uiabilityoncreate)方法根据launchParam.launchReason的不同类型执行相应操作。
34
35**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
36
37| 名称                          | 值   | 说明                                                         |
38| ----------------------------- | ---- | ------------------------------------------------------------ |
39| UNKNOWN          | 0    | 未知原因。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
40| START_ABILITY          | 1    | 通过[startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)接口启动Ability。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
41| CALL | 2    | 通过[startAbilityByCall](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartabilitybycall)接口启动Ability。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
42| CONTINUATION           | 3    | 跨端迁移启动Ability。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
43| APP_RECOVERY           | 4    | 设置应用恢复后,应用故障时自动恢复启动Ability。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
44| SHARE<sup>10+</sup>           | 5    | 通过原子化服务分享启动Ability。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
45| AUTO_STARTUP<sup>11+</sup>           | 8    | 通过设置开机自启动来启动Ability。 |
46| INSIGHT_INTENT<sup>11+</sup>           | 9    | 通过洞察意图来启动Ability。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
47| PREPARE_CONTINUATION<sup>12+</sup>           | 10    | 跨端迁移提前启动Ability。<br>**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。|
48
49**示例:**
50
51```ts
52import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit';
53
54class MyAbility extends UIAbility {
55  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
56    if (launchParam.launchReason === AbilityConstant.LaunchReason.START_ABILITY) {
57      console.log('The ability has been started by the way of startAbility.');
58    }
59  }
60}
61```
62
63## LastExitReason
64
65Ability上次退出原因,该类型为枚举,可配合UIAbility的[onCreate(want, launchParam)](js-apis-app-ability-uiAbility.md#uiabilityoncreate)方法根据launchParam.lastExitReason的不同类型执行相应操作。
66
67**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
68
69| 名称                          | 值   | 说明                                                         |
70| ----------------------------- | ---- | ------------------------------------------------------------ |
71| UNKNOWN          | 0    | 未知原因。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
72| ABILITY_NOT_RESPONDING<sup>(deprecated)</sup> | 1    | ability未响应。<br>**说明:** 从API version 9开始支持,从API version 10开始废弃,请使用APP_FREEZE替代。|
73| NORMAL | 2    | 用户主动关闭,应用程序正常退出。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。<br>**说明**:如果调用[process.exit()](../apis-arkts/js-apis-process.md#processexitdeprecated)、kill命令等非Ability Kit提供的能力退出应用进程,也会返回NORMAL。 |
74| CPP_CRASH<sup>10+</sup>  | 3    | 本机异常信号,导致应用程序退出。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
75| JS_ERROR<sup>10+</sup>  | 4    | 当应用存在JS语法错误并未被开发者捕获时,触发JS_ERROR故障,导致应用程序退出。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
76| APP_FREEZE<sup>10+</sup>  | 5    | 由于watchdog检测出应用Freeze故障,导致应用程序退出。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
77| PERFORMANCE_CONTROL<sup>10+</sup>  | 6    | 由于系统性能问题(如设备内存不足),导致应用程序退出。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。<br>**说明**:该接口即将废弃,建议使用RESOURCE_CONTROL替代。 |
78| RESOURCE_CONTROL<sup>10+</sup>  | 7    | 系统资源使用不当,导致应用程序退出。具体错误原因可以通过[LaunchParam.lastExitMessage](#launchparam)获取,可能原因如下: <br> - CPU Highload,CPU高负载。<br> - CPU_EXT Highload,快速CPU负载检测。<br> - IO Manage Control,I/O管控。<br> - App Memory Deterioration,应用内存超限劣化。<br> - Temperature Control,温度管控。<br> - Memory Pressure,整机低内存触发按优先级由低到高查杀。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。|
79| UPGRADE<sup>10+</sup>  | 8    | 应用程序因升级而退出。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 |
80| USER_REQUEST<sup>18+</sup>  | 9    | 应用程序因多任务中心请求而退出,例如用户在多任务管理界面执行上划、一键清理等操作。<br>**原子化服务API**:从API version 18开始,该接口支持在原子化服务中使用。 |
81| SIGNAL<sup>18+</sup>  | 10    | 应用程序因收到系统kill指令信号而退出。<br>**原子化服务API**:从API version 18开始,该接口支持在原子化服务中使用。 |
82
83**示例:**
84
85```ts
86import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit';
87
88class MyAbility extends UIAbility {
89  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
90    if (launchParam.lastExitReason === AbilityConstant.LastExitReason.APP_FREEZE) {
91      console.log('The ability has exit last because the ability was not responding.');
92    }
93    if (launchParam.lastExitReason === AbilityConstant.LastExitReason.RESOURCE_CONTROL) {
94      console.log('The ability has exit last because the rss control,the lastExitReason is '+  launchParam.lastExitReason + ', the lastExitMessage is ' + launchParam.lastExitMessage);
95    }
96  }
97}
98```
99
100## LastExitDetailInfo<sup>18+</sup>
101
102记录Ability所在进程上次退出的详细信息。
103
104**原子化服务API**:从API version 18开始,该接口支持在原子化服务中使用。
105
106**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
107
108| 名称 | 类型 | 只读 | 可选 | 说明 |
109| -------- | -------- | -------- | -------- | -------- |
110| pid | number | 否 | 否 | Ability上次退出所在进程的进程号。 |
111| processName | string | 否 | 否 | Ability上次退出所在进程的名称。 |
112| uid | number | 否 | 否 | Ability上次退出所在应用的UID。 |
113| exitSubReason | number | 否 | 否 | Ability上次退出的子原因。 |
114| exitMsg | string | 否 | 否 | Ability上次退出时所在进程被kill的描述信息。 |
115| rss | number | 否 | 否 | Ability上次退出时所在进程的rss值。 |
116| pss | number | 否 | 否 | Ability上次退出时所在进程的pss值。 |
117| timestamp | number | 否 | 否 | Ability上次退出时的时间戳。 |
118
119**示例**:
120
121```ts
122import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit';
123
124class MyAbility extends UIAbility {
125  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
126    if (launchParam.lastExitDetailInfo) {
127      console.log('pid: ' + launchParam.lastExitDetailInfo.pid +
128        '\n processName: ' + launchParam.lastExitDetailInfo.processName +
129        '\n uid: ' + launchParam.lastExitDetailInfo.uid +
130        '\n exitSubReason: ' + launchParam.lastExitDetailInfo.exitSubReason +
131        '\n exitMsg: ' + launchParam.lastExitDetailInfo.exitMsg +
132        '\n rss: ' + launchParam.lastExitDetailInfo.rss +
133        '\n pss: ' + launchParam.lastExitDetailInfo.pss +
134        '\n timestamp: ' + launchParam.lastExitDetailInfo.timestamp
135      );
136    }
137  }
138}
139```
140
141## OnContinueResult
142
143Ability迁移结果,该类型为枚举,可配合UIAbility的[onContinue(wantParam)](js-apis-app-ability-uiAbility.md#uiabilityoncontinue)方法进完成相应的返回。
144
145**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
146
147**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
148
149| 名称                          | 值   | 说明                                                         |
150| ----------------------------- | ---- | ------------------------------------------------------------ |
151| AGREE           | 0    | 表示同意。 |
152| REJECT           | 1    | 表示拒绝:如应用在[onContinue](js-apis-app-ability-uiAbility.md#uiabilityoncontinue)中异常会导致迁移以后数据恢复时显示异常,则可以建议REJECT。 |
153| MISMATCH  | 2    | 表示版本不匹配:迁移发起端应用可以在[onContinue](js-apis-app-ability-uiAbility.md#uiabilityoncontinue)中获取到迁移目标端应用的版本号,进行协商后,如果版本不匹配导致无法迁移,可以返回该错误。|
154
155**示例:**
156
157```ts
158import { UIAbility, AbilityConstant } from '@kit.AbilityKit';
159
160class MyAbility extends UIAbility {
161  onContinue(wantParam: Record<string, Object>) {
162    return AbilityConstant.OnContinueResult.AGREE;
163  }
164}
165```
166
167## MemoryLevel
168
169内存级别,该类型为枚举,可配合UIAbility的[onMemoryLevel(level)](js-apis-app-ability-ability.md#abilityonmemorylevel)方法根据level执行不同内存级别的相应操作。
170
171**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
172
173**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
174
175| 名称                         | 值 | 说明                |
176| ---                         | --- | ---           |
177| MEMORY_LEVEL_MODERATE       | 0   | 内存占用适中。 |
178| MEMORY_LEVEL_LOW            | 1   | 内存占用低。   |
179| MEMORY_LEVEL_CRITICAL       | 2   | 内存占用高。   |
180
181**示例:**
182
183```ts
184import { UIAbility, AbilityConstant } from '@kit.AbilityKit';
185
186class MyAbility extends UIAbility {
187  onMemoryLevel(level: AbilityConstant.MemoryLevel) {
188    if (level === AbilityConstant.MemoryLevel.MEMORY_LEVEL_CRITICAL) {
189      console.log('The memory of device is critical, please release some memory.');
190    }
191  }
192}
193```
194
195## WindowMode<sup>12+</sup>
196
197启动Ability时的窗口模式,类型为枚举。可配合[startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)使用,指定启动Ability的窗口模式。
198
199**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
200
201| 名称                        | 值 | 说明                 |
202| ---                         | --- | ---                  |
203| WINDOW_MODE_FULLSCREEN      | 1   | 全屏模式。仅在2in1和tablet设备上生效。  |
204| WINDOW_MODE_SPLIT_PRIMARY   | 100 | 支持应用内拉起Ability时设置为分屏,左侧分屏。仅在折叠屏和tablet设备上生效。   |
205| WINDOW_MODE_SPLIT_SECONDARY | 101 | 支持应用内拉起Ability时设置为分屏,右侧分屏。仅在折叠屏和tablet设备上生效。   |
206
207**示例:**
208
209```ts
210import { UIAbility, StartOptions, Want, AbilityConstant } from '@kit.AbilityKit';
211import { BusinessError } from '@kit.BasicServicesKit';
212
213let want: Want = {
214  bundleName: 'com.example.myapplication',
215  abilityName: 'EntryAbility'
216};
217let option: StartOptions = {
218  windowMode: AbilityConstant.WindowMode.WINDOW_MODE_SPLIT_PRIMARY
219};
220
221// 确保从上下文获取到context
222class MyAbility extends UIAbility {
223  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
224    this.context.startAbility(want, option).then(() => {
225      console.log('Succeed to start ability.');
226    }).catch((error: BusinessError) => {
227      console.error(`Failed to start ability with error: ${JSON.stringify(error)}`);
228    });
229  }
230}
231```
232
233## OnSaveResult
234
235保存应用数据的结果,该类型为枚举,可配合UIAbility的[onSaveState(reason, wantParam)](js-apis-app-ability-uiAbility.md#uiabilityonsavestate)方法完成相应的返回。
236
237**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
238
239**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
240
241| 名称                          | 值   | 说明                                                         |
242| ----------------------------- | ---- | ------------------------------------------------------------ |
243| ALL_AGREE           | 0    | 总是同意保存状态。 |
244| CONTINUATION_REJECT           | 1    | 拒绝迁移保存状态。 |
245| CONTINUATION_MISMATCH  | 2    | 迁移不匹配。|
246| RECOVERY_AGREE           | 3    | 同意恢复保存状态。 |
247| RECOVERY_REJECT  | 4    | 拒绝恢复保存状态。|
248| ALL_REJECT  | 5    | 总是拒绝保存状态。|
249
250**示例:**
251
252```ts
253import { UIAbility, AbilityConstant } from '@kit.AbilityKit';
254
255class MyAbility extends UIAbility {
256  onSaveState(reason: AbilityConstant.StateType, wantParam: Record<string, Object>) {
257    return AbilityConstant.OnSaveResult.ALL_AGREE;
258  }
259}
260```
261
262## StateType
263
264保存应用数据场景原因,该类型为枚举,可配合UIAbility的[onSaveState(reason, wantParam)](js-apis-app-ability-uiAbility.md#uiabilityonsavestate)方法根据reason的不同类型执行相应操作。
265
266**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
267
268**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
269
270| 名称                          | 值   | 说明                                                         |
271| ----------------------------- | ---- | ------------------------------------------------------------ |
272| CONTINUATION           | 0    | 迁移保存状态。 |
273| APP_RECOVERY           | 1    | 应用恢复保存状态。 |
274
275**示例:**
276
277```ts
278import { UIAbility, AbilityConstant } from '@kit.AbilityKit';
279
280class MyAbility extends UIAbility {
281  onSaveState(reason: AbilityConstant.StateType, wantParam: Record<string, Object>) {
282    if (reason === AbilityConstant.StateType.CONTINUATION) {
283      console.log('Save the ability data when the ability continuation.');
284    }
285    return AbilityConstant.OnSaveResult.ALL_AGREE;
286  }
287}
288```
289
290## ContinueState<sup>10+</sup>
291
292流转状态枚举值。用于表示当前应用任务流转的状态。可配合[UIAbilityContext](js-apis-inner-application-uiAbilityContext.md)的[setMissionContinueState](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextsetmissioncontinuestate10)方法进行设置。
293
294**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。
295
296**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
297
298| 名称           | 值       | 说明                                                         |
299| ------------- | --------- | ------------------------------------------------------------ |
300| ACTIVE        | 0         | 指示当前应用任务流转处于激活状态。                              |
301| INACTIVE      | 1         | 指示当前应用任务流转处于未激活状态。                            |
302
303**示例:**
304
305```ts
306import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit';
307import { BusinessError } from '@kit.BasicServicesKit';
308
309class MyAbility extends UIAbility {
310  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
311    this.context.setMissionContinueState(AbilityConstant.ContinueState.INACTIVE, (result: BusinessError) => {
312      console.info(`setMissionContinueState: ${JSON.stringify(result)}`);
313    });
314  }
315}
316```
317
318## CollaborateResult<sup>18+</sup>
319
320协同状态枚举值,用于表示多设备场景下,调用方应用拉起协同方应用时,协同方应用是否接受协同。配合UIAbility的[onCollaborate(wantParam)](js-apis-app-ability-uiAbility.md#uiabilityoncollaborate18)方法进行设置。
321
322**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
323
324| 名称     | 值   | 说明       |
325| -------- | ---- | ---------- |
326| ACCEPT   | 0    | 接受协同。 |
327| REJECT   | 1    | 拒绝协同。 |
328
329**示例:**
330
331```ts
332import { UIAbility, AbilityConstant } from '@kit.AbilityKit';
333
334class MyAbility extends UIAbility {
335  onCollaborate(wantParam: Record<string, Object>) {
336    return AbilityConstant.CollaborateResult.ACCEPT;
337  }
338}
339```
340
341## PrepareTermination<sup>15+</sup>
342
343应用被用户关闭时的动作枚举值,需要配合[AbilityStage](js-apis-app-ability-abilityStage.md)的[onPrepareTermination](js-apis-app-ability-abilityStage.md#abilitystageonpreparetermination15)或者[onPrepareTerminationAsync](js-apis-app-ability-abilityStage.md#abilitystageonprepareterminationasync15)方法使用。
344
345**原子化服务API**:从API version 15开始,该接口支持在原子化服务中使用。
346
347**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
348
349| 名称 | 值 | 说明 |
350| ------------- | --------- | ----------- |
351| TERMINATE_IMMEDIATELY | 0 | 表示立即执行结束动作,默认值。|
352| CANCEL | 1 | 表示取消结束动作。|
353
354**示例:**
355
356```ts
357import { AbilityConstant, AbilityStage } from '@kit.AbilityKit';
358
359class MyAbilityStage extends AbilityStage {
360  onPrepareTermination(): AbilityConstant.PrepareTermination {
361    console.info('MyAbilityStage.onPrepareTermination is called');
362    return AbilityConstant.PrepareTermination.CANCEL;
363  }
364}
365```
366