• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.AbilityConstant (AbilityConstant)
2
3AbilityConstant提供Ability相关的枚举,包括设置初次启动原因、上次退出原因、迁移结果、窗口类型等。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口仅可在Stage模型下使用。
9
10## 导入模块
11
12```ts
13import AbilityConstant from '@ohos.app.ability.AbilityConstant';
14```
15
16## 属性
17
18## AbilityConstant.LaunchParam
19
20启动参数。
21
22**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
23
24| 名称 | 类型 | 可读 | 可写 | 说明 |
25| -------- | -------- | -------- | -------- | -------- |
26| launchReason | [LaunchReason](#abilityconstantlaunchreason)| 是 | 是 | 枚举类型,表示启动原因。 |
27| lastExitReason | [LastExitReason](#abilityconstantlastexitreason) | 是 | 是 | 枚举类型,表示最后退出原因。 |
28
29## AbilityConstant.LaunchReason
30
31Ability初次启动原因,该类型为枚举,可配合[Ability](js-apis-app-ability-uiAbility.md)的[onCreate(want, launchParam)](js-apis-app-ability-uiAbility.md#uiabilityoncreate)方法根据launchParam.launchReason的不同类型执行相应操作。
32
33**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
34
35| 名称                          | 值   | 说明                                                         |
36| ----------------------------- | ---- | ------------------------------------------------------------ |
37| UNKNOWN          | 0    | 未知原因。 |
38| START_ABILITY          | 1    | 通过[startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability)接口启动ability。 |
39| CALL | 2    | 通过[startAbilityByCall](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartabilitybycall)接口启动ability。 |
40| CONTINUATION           | 3    | 跨端设备迁移启动ability。 |
41| APP_RECOVERY           | 4    | 设置应用恢复后,应用故障时自动恢复启动ability。 |
42| SHARE<sup>10+</sup>           | 5    | 通过原子化服务分享启动ability。 |
43
44**示例:**
45
46```ts
47import UIAbility from '@ohos.app.ability.UIAbility';
48import Want from '@ohos.app.ability.Want';
49
50class MyAbility extends UIAbility {
51    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
52        if (launchParam.launchReason === AbilityConstant.LaunchReason.START_ABILITY) {
53            console.log('The ability has been started by the way of startAbility.');
54        }
55    }
56}
57```
58
59## AbilityConstant.LastExitReason
60
61Ability上次退出原因,该类型为枚举,可配合[Ability](js-apis-app-ability-uiAbility.md)的[onCreate(want, launchParam)](js-apis-app-ability-uiAbility.md#uiabilityoncreate)方法根据launchParam.lastExitReason的不同类型执行相应操作。
62
63**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
64
65| 名称                          | 值   | 说明                                                         |
66| ----------------------------- | ---- | ------------------------------------------------------------ |
67| UNKNOWN          | 0    | 未知原因。 |
68| ABILITY_NOT_RESPONDING | 1    | ability未响应。从API version 9 开始支持,从API version 10 开始废弃,建议使用APP_FREEZE替代。 |
69| NORMAL | 2    | 用户主动关闭,应用程序正常退出。 |
70| CPP_CRASH<sup>10+</sup>  | 3    | 本机异常信号,导致应用程序退出。 |
71| JS_ERROR<sup>10+</sup>  | 4    | 当应用存在JS语法错误并未被开发者捕获时,触发JS_ERROR故障,导致应用程序退出。 |
72| APP_FREEZE<sup>10+</sup>  | 5    | 由于watchdog检测出应用Freeze故障,导致应用程序退出。 |
73| PERFORMANCE_CONTROL<sup>10+</sup>  | 6    | 由于系统性能问题(如设备内存不足),导致应用程序退出。 |
74| RESOURCE_CONTROL<sup>10+</sup>  | 7    | 由于系统资源违规使用(超过CPU、I/O、内存的使用量),导致应用程序退出。 |
75| UPGRADE<sup>10+</sup>  | 8    | 应用程序因升级而退出。 |
76
77**示例:**
78
79```ts
80import UIAbility from '@ohos.app.ability.UIAbility';
81import Want from '@ohos.app.ability.Want';
82
83class MyAbility extends UIAbility {
84    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
85        if (launchParam.lastExitReason === AbilityConstant.LastExitReason.ABILITY_NOT_RESPONDING) {
86            console.log('The ability has exit last because the ability was not responding.');
87        }
88    }
89}
90```
91
92## AbilityConstant.OnContinueResult
93
94Ability迁移结果,该类型为枚举,可配合[Ability](js-apis-app-ability-uiAbility.md)的[onContinue(wantParam)](js-apis-app-ability-uiAbility.md#uiabilityoncontinue)方法进完成相应的返回。
95
96**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
97
98| 名称                          | 值   | 说明                                                         |
99| ----------------------------- | ---- | ------------------------------------------------------------ |
100| AGREE           | 0    | 表示同意。 |
101| REJECT           | 1    | 表示拒绝:如应用在onContinue中异常会导致迁移以后数据恢复时显示异常,则可以建议REJECT。 |
102| MISMATCH  | 2    | 表示版本不匹配:迁移发起端应用可以在onContinue中获取到迁移目标端应用的版本号,进行协商后,如果版本不匹配导致无法迁移,可以返回该错误。|
103
104**示例:**
105
106```ts
107import UIAbility from '@ohos.app.ability.UIAbility';
108
109class MyAbility extends UIAbility {
110    onContinue(wantParam: Record<string, Object>) {
111        return AbilityConstant.OnContinueResult.AGREE;
112    }
113}
114```
115
116## AbilityConstant.WindowMode
117
118启动Ability时的窗口模式,该类型为枚举,可配合startAbility使用指定启动Ability的窗口模式。
119
120**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
121
122**系统API**: 此接口为系统接口,三方应用不支持调用。
123
124| 名称                        | 值 | 说明                 |
125| ---                         | --- | ---                  |
126| WINDOW_MODE_UNDEFINED       | 0   | 未定义窗口模式。       |
127| WINDOW_MODE_FULLSCREEN      | 1   | 全屏模式。            |
128| WINDOW_MODE_SPLIT_PRIMARY   | 100 | 屏幕如果是水平方向表示左分屏,屏幕如果是竖直方向表示上分屏。   |
129| WINDOW_MODE_SPLIT_SECONDARY | 101 | 屏幕如果是水平方向表示右分屏,屏幕如果是竖直方向表示下分屏。   |
130| WINDOW_MODE_FLOATING        | 102 | 自由悬浮形式窗口模式。 |
131
132**示例:**
133
134```ts
135import StartOptions from '@ohos.app.ability.StartOptions';
136import Want from '@ohos.app.ability.Want';
137import { BusinessError } from '@ohos.base';
138
139let want: Want = {
140    bundleName: 'com.example.myapplication',
141    abilityName: 'EntryAbility'
142};
143let option: StartOptions = {
144    windowMode: AbilityConstant.WindowMode.WINDOW_MODE_FULLSCREEN
145};
146
147// 确保从上下文获取到context
148this.context.startAbility(want, option).then(()=>{
149    console.log('Succeed to start ability.');
150}).catch((error: BusinessError)=>{
151    console.error('Failed to start ability with error: ${JSON.stringify(error)}');
152});
153```
154
155## AbilityConstant.MemoryLevel
156
157内存级别,该类型为枚举,可配合[Ability](js-apis-app-ability-ability.md)的[onMemoryLevel(level)](js-apis-app-ability-ability.md#abilityonmemorylevel)方法根据level执行不同内存级别的相应操作。
158
159**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
160
161| 名称                         | 值 | 说明                |
162| ---                         | --- | ---           |
163| MEMORY_LEVEL_MODERATE       | 0   | 内存占用适中。 |
164| MEMORY_LEVEL_LOW            | 1   | 内存占用低。   |
165| MEMORY_LEVEL_CRITICAL       | 2   | 内存占用高。   |
166
167**示例:**
168
169```ts
170import UIAbility from '@ohos.app.ability.UIAbility';
171
172class MyAbility extends UIAbility {
173    onMemoryLevel(level: AbilityConstant.MemoryLevel) {
174        if (level === AbilityConstant.MemoryLevel.MEMORY_LEVEL_CRITICAL) {
175            console.log('The memory of device is critical, please release some memory.');
176        }
177    }
178}
179```
180
181## AbilityConstant.OnSaveResult
182
183保存应用数据的结果,该类型为枚举,可配合[Ability](js-apis-app-ability-uiAbility.md)的[onSaveState(reason, wantParam)](js-apis-app-ability-uiAbility.md#uiabilityonsavestate)方法完成相应的返回。
184
185**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
186
187| 名称                          | 值   | 说明                                                         |
188| ----------------------------- | ---- | ------------------------------------------------------------ |
189| ALL_AGREE           | 0    | 总是同意保存状态。 |
190| CONTINUATION_REJECT           | 1    | 拒绝迁移保存状态。 |
191| CONTINUATION_MISMATCH  | 2    | 迁移不匹配。|
192| RECOVERY_AGREE           | 3    | 同意恢复保存状态。 |
193| RECOVERY_REJECT  | 4    | 拒绝恢复保存状态。|
194| ALL_REJECT  | 5    | 总是拒绝保存状态。|
195
196**示例:**
197
198```ts
199import UIAbility from '@ohos.app.ability.UIAbility';
200
201class MyAbility extends UIAbility {
202    onSaveState(reason: AbilityConstant.StateType, wantParam: Record<string, Object>) {
203        return AbilityConstant.OnSaveResult.ALL_AGREE;
204    }
205}
206```
207
208## AbilityConstant.StateType
209
210保存应用数据场景原因,该类型为枚举,可配合[Ability](js-apis-app-ability-uiAbility.md)的[onSaveState(reason, wantParam)](js-apis-app-ability-uiAbility.md#uiabilityonsavestate)方法根据reason的不同类型执行相应操作。
211
212**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
213
214| 名称                          | 值   | 说明                                                         |
215| ----------------------------- | ---- | ------------------------------------------------------------ |
216| CONTINUATION           | 0    | 迁移保存状态。 |
217| APP_RECOVERY           | 1    | 应用恢复保存状态。 |
218
219**示例:**
220
221```ts
222import UIAbility from '@ohos.app.ability.UIAbility';
223
224class MyAbility extends UIAbility {
225    onSaveState(reason: AbilityConstant.StateType, wantParam: Record<string, Object>) {
226        if (reason === AbilityConstant.StateType.CONTINUATION) {
227            console.log('Save the ability data when the ability continuation.');
228        }
229        return AbilityConstant.OnSaveResult.ALL_AGREE;
230    }
231}
232```
233
234## AbilityConstant.ContinueState<sup>10+</sup>
235
236ContinueState说明枚举值。用于表示当前应用任务流转的状态。可配合[UIAbilityContext](js-apis-inner-application-uiAbilityContext.md)的[setMissionContinueState](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextsetmissioncontinuestate10)方法进行设置。
237
238**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
239
240| 名称           | 值       | 说明                                                         |
241| ------------- | --------- | ------------------------------------------------------------ |
242| ACTIVE        | 0         | 指示当前应用任务流转处于激活状态。                              |
243| INACTIVE      | 1         | 指示当前应用任务流转处于未激活状态。                            |
244
245**示例:**
246
247```ts
248  import { BusinessError } from '@ohos.base';
249
250  this.context.setMissionContinueState(AbilityConstant.ContinueState.INACTIVE, (result: BusinessError) => {
251    console.info(`setMissionContinueState: ${JSON.stringify(result)}`);
252  });
253```