js-apis-app-ability-appRecovery.md 5.1 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.app.ability.appRecovery (appRecovery)
Z
zhancaijin 已提交
2

Z
zhancaijin 已提交
3
appRecovery模块提供了应用在故障状态下的恢复能力。
Z
zhancaijin 已提交
4 5 6 7 8 9

> **说明:**
> 
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。当前版本仅支持单进程中单Ability的应用恢复。

## 导入模块
M
m00512953 已提交
10
```ts
11
import appRecovery from '@ohos.app.ability.appRecovery';
Z
zhancaijin 已提交
12 13 14 15 16
```


## appRecovery.RestartFlag

D
donglin 已提交
17
应用重启标志,[enableAppRecovery](#apprecoveryenableapprecovery)接口重启选项参数,该类型为枚举。
Z
zhancaijin 已提交
18 19 20

**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core

M
MapleStory 已提交
21 22 23 24 25 26
| 名称       | 值   | 说明       |
| ---------- | ---- | ---------- |
| ALWAYS_RESTART   | 0    | 总是重启应用。 |
| RESTART_WHEN_JS_CRASH   | 0x0001    | 发生JS_CRASH时重启应用。 |
| RESTART_WHEN_APP_FREEZE   | 0x0002    | 发生APP_FREEZE时重启应用。 |
| NO_RESTART           | 0xFFFF    | 总是不重启应用。 |
Z
zhancaijin 已提交
27 28 29

## appRecovery.SaveOccasionFlag

D
donglin 已提交
30
保存条件标志,[enableAppRecovery](#apprecoveryenableapprecovery)接口状态保存时的选项参数,该类型为枚举。
Z
zhancaijin 已提交
31 32 33

**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core

D
donglin 已提交
34
| 名称                          | 值   | 说明                                                         |
Z
zhancaijin 已提交
35
| ----------------------------- | ---- | ------------------------------------------------------------ |
36 37
| SAVE_WHEN_ERROR            | 0x0001    | 当发生应用故障时保存。 |
| SAVE_WHEN_BACKGROUND            | 0x0002    | 当应用切入后台时保存。 |
Z
zhancaijin 已提交
38 39 40

## appRecovery.SaveModeFlag  

D
donglin 已提交
41
状态保存标志,[enableAppRecovery](#apprecoveryenableapprecovery)接口状态保存方式的参数,该类型为枚举。
Z
zhancaijin 已提交
42 43 44

**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core

D
donglin 已提交
45
| 名称                          | 值   | 说明                                                         |
Z
zhancaijin 已提交
46
| ----------------------------- | ---- | ------------------------------------------------------------ |
47 48
| SAVE_WITH_FILE             | 0x0001    | 每次状态保存都会写入到本地文件缓存。 |
| SAVE_WITH_SHARED_MEMORY             | 0x0002    | 状态先保存在内存中,应用故障退出时写入到本地文件缓存。 |
Z
zhancaijin 已提交
49 50 51

## appRecovery.enableAppRecovery

D
donglin 已提交
52
enableAppRecovery(restart?: [RestartFlag](#apprecoveryrestartflag), saveOccasion?: [SaveOccasionFlag](#apprecoverysaveoccasionflag), saveMode?: [SaveModeFlag](#apprecoverysavemodeflag)) : void;
Z
zhancaijin 已提交
53 54 55 56 57 58 59 60 61

使能应用恢复功能,参数按顺序填入。

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
D
donglin 已提交
62 63 64
| restart | [RestartFlag](#apprecoveryrestartflag) | 否 | 枚举类型,发生对应故障时是否重启,默认为不重启。 |
| saveOccasion | [SaveOccasionFlag](#apprecoverysaveoccasionflag) | 否 | 枚举类型,状态保存时机,默认为故障时保存。 |
| saveMode | [SaveModeFlag](#apprecoverysavemodeflag) | 否 | 枚举类型,状态保存方式, 默认为文件缓存。 |
Z
zhancaijin 已提交
65 66 67

**示例:**
    
Z
zhancaijin 已提交
68
```ts
69
import appRecovery from '@ohos.app.ability.appRecovery';
D
donglin 已提交
70
import AbilityStage from '@ohos.app.ability.AbilityStage';
D
donglin 已提交
71

M
MapleStory 已提交
72
export default class MyAbilityStage extends AbilityStage {
Z
zhancaijin 已提交
73
    onCreate() {
74 75 76 77 78
        appRecovery.enableAppRecovery(
            appRecovery.RestartFlag::ALWAYS_RESTART,
            appRecovery.SaveOccasionFlag::SAVE_WHEN_ERROR,
            appRecovery.SaveModeFlag::SAVE_WITH_FILE
        );
Z
zhancaijin 已提交
79 80 81 82 83 84 85 86
    }
}
```

## appRecovery.restartApp

restartApp(): void;

M
m00512953 已提交
87
重启当前App进程,可以配合[errorManager](js-apis-app-ability-errorManager.md)相关接口使用。
Z
zhancaijin 已提交
88 89 90 91 92 93

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core


**示例:**
    
Z
zhancaijin 已提交
94
```ts
95
import appRecovery from '@ohos.app.ability.appRecovery';
D
donglin 已提交
96
import errorManager from '@ohos.app.ability.errorManager';
D
donglin 已提交
97 98

let observer = {
Z
zhancaijin 已提交
99
    onUnhandledException(errorMsg) {
M
mingxihua 已提交
100
        console.log('onUnhandledException, errorMsg: ', errorMsg);
Z
zhancaijin 已提交
101 102
        appRecovery.restartApp();
    }
103 104 105
};

try {
M
mingxihua 已提交
106
    errorManager.on('error', observer);
107
} catch (paramError) {
M
mingxihua 已提交
108
    console.log('error: ' + paramError.code + ', ' + paramError.message);
Z
zhancaijin 已提交
109 110 111 112 113 114 115
}
```

## appRecovery.saveAppState

saveAppState(): boolean;

M
m00512953 已提交
116
保存当前App状态,可以配合[errorManager](js-apis-app-ability-errorManager.md)相关接口使用
Z
zhancaijin 已提交
117 118 119 120 121 122 123

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
D
donglin 已提交
124
| boolean | 保存成功与否。true:保存成功,false:保存失败。 |
Z
zhancaijin 已提交
125 126 127

**示例:**
    
Z
zhancaijin 已提交
128
```ts
129
import appRecovery from '@ohos.app.ability.appRecovery';
D
donglin 已提交
130
import errorManager from '@ohos.app.ability.errorManager';
D
donglin 已提交
131 132

let observer = {
Z
zhancaijin 已提交
133
    onUnhandledException(errorMsg) {
M
mingxihua 已提交
134
        console.log('onUnhandledException, errorMsg: ', errorMsg);
Z
zhancaijin 已提交
135 136
        appRecovery.saveAppState();
    }
137 138 139
};

try {
M
mingxihua 已提交
140
    errorManager.on('error', observer);
141
} catch (paramError) {
M
mingxihua 已提交
142
    console.log('error: ' + paramError.code + ', ' + paramError.message);
Z
zhancaijin 已提交
143 144
}
```