• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.app.ability.appRecovery (appRecovery)
2
3appRecovery模块提供了应用在故障状态下的恢复能力。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。当前版本仅支持单进程中单Ability的应用恢复。
8
9## 导入模块
10```ts
11import appRecovery from '@ohos.app.ability.appRecovery';
12```
13
14## appRecovery.RestartFlag
15
16应用重启标志,[enableAppRecovery](#apprecoveryenableapprecovery)接口重启选项参数,该类型为枚举。
17
18**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
19
20| 名称       | 值   | 说明       |
21| ---------- | ---- | ---------- |
22| ALWAYS_RESTART   | 0    | 总是重启应用。 |
23| RESTART_WHEN_JS_CRASH   | 0x0001    | 发生JS_CRASH时重启应用。 |
24| RESTART_WHEN_APP_FREEZE   | 0x0002    | 发生APP_FREEZE时重启应用。 |
25| NO_RESTART           | 0xFFFF    | 总是不重启应用。 |
26
27## appRecovery.SaveOccasionFlag
28
29保存条件标志,[enableAppRecovery](#apprecoveryenableapprecovery)接口状态保存时的选项参数,该类型为枚举。
30
31**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
32
33| 名称                          | 值   | 说明                                                         |
34| ----------------------------- | ---- | ------------------------------------------------------------ |
35| SAVE_WHEN_ERROR            | 0x0001    | 当发生应用故障时保存。 |
36| SAVE_WHEN_BACKGROUND            | 0x0002    | 当应用切入后台时保存。 |
37
38## appRecovery.SaveModeFlag
39
40状态保存标志,[enableAppRecovery](#apprecoveryenableapprecovery)接口状态保存方式的参数,该类型为枚举。
41
42**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
43
44| 名称                          | 值   | 说明                                                         |
45| ----------------------------- | ---- | ------------------------------------------------------------ |
46| SAVE_WITH_FILE             | 0x0001    | 每次状态保存都会写入到本地文件缓存。 |
47| SAVE_WITH_SHARED_MEMORY             | 0x0002    | 状态先保存在内存中,应用故障退出时写入到本地文件缓存。 |
48
49## appRecovery.enableAppRecovery
50
51enableAppRecovery(restart?: [RestartFlag](#apprecoveryrestartflag), saveOccasion?: [SaveOccasionFlag](#apprecoverysaveoccasionflag), saveMode?: [SaveModeFlag](#apprecoverysavemodeflag)) : void;
52
53使能应用恢复功能,参数按顺序填入。
54
55**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
56
57**参数:**
58
59| 参数名 | 类型 | 必填 | 说明 |
60| -------- | -------- | -------- | -------- |
61| restart | [RestartFlag](#apprecoveryrestartflag) | 否 | 枚举类型,发生对应故障时是否重启,默认为不重启。 |
62| saveOccasion | [SaveOccasionFlag](#apprecoverysaveoccasionflag) | 否 | 枚举类型,状态保存时机,默认为故障时保存。 |
63| saveMode | [SaveModeFlag](#apprecoverysavemodeflag) | 否 | 枚举类型,状态保存方式, 默认为文件缓存。 |
64
65**示例:**
66
67```ts
68import appRecovery from '@ohos.app.ability.appRecovery';
69import AbilityStage from '@ohos.app.ability.AbilityStage';
70
71export default class MyAbilityStage extends AbilityStage {
72    onCreate() {
73        appRecovery.enableAppRecovery(
74            appRecovery.RestartFlag.ALWAYS_RESTART,
75            appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR,
76            appRecovery.SaveModeFlag.SAVE_WITH_FILE
77        );
78    }
79}
80```
81
82## appRecovery.restartApp
83
84restartApp(): void;
85
86重启当前App进程,可以配合[errorManager](js-apis-app-ability-errorManager.md)相关接口使用。
87
88**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
89
90
91**示例:**
92
93```ts
94import appRecovery from '@ohos.app.ability.appRecovery';
95import errorManager from '@ohos.app.ability.errorManager';
96
97let observer = {
98    onUnhandledException(errorMsg) {
99        console.log('onUnhandledException, errorMsg: ', errorMsg);
100        appRecovery.restartApp();
101    }
102};
103
104try {
105    errorManager.on('error', observer);
106} catch (paramError) {
107    console.log('error: ' + paramError.code + ', ' + paramError.message);
108}
109```
110
111## appRecovery.saveAppState
112
113saveAppState(): boolean;
114
115保存当前App状态,可以配合[errorManager](js-apis-app-ability-errorManager.md)相关接口使用
116
117**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
118
119**返回值:**
120
121| 类型 | 说明 |
122| -------- | -------- |
123| boolean | 保存成功与否。true:保存成功,false:保存失败。 |
124
125**示例:**
126
127```ts
128import appRecovery from '@ohos.app.ability.appRecovery';
129import errorManager from '@ohos.app.ability.errorManager';
130
131let observer = {
132    onUnhandledException(errorMsg) {
133        console.log('onUnhandledException, errorMsg: ', errorMsg);
134        appRecovery.saveAppState();
135    }
136};
137
138try {
139    errorManager.on('error', observer);
140} catch (paramError) {
141    console.log('error: ' + paramError.code + ', ' + paramError.message);
142}
143```
144