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