js-apis-app-ability-appRecovery.md 4.3 KB
Newer Older
Z
zhancaijin 已提交
1 2
# appRecovery

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

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

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


## appRecovery.RestartFlag

[enableAppRecovery](#apprecoveryenableapprecovery)接口重启选项参数。

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

D
donglin 已提交
21
| 名称                          | 值   | 说明                                                         |
Z
zhancaijin 已提交
22 23
| ----------------------------- | ---- | ------------------------------------------------------------ |
| ALWAYS_RESTART           | 0    | 总是重启应用。 |
24 25 26 27
| CPP_CRASH_NO_RESTART           | 0x0001    | 发生CPP_CRASH时不重启应用。 |
| JS_CRASH_NO_RESTART           | 0x0002    | 发生JS_CRASH时不重启应用。 |
| APP_FREEZE_NO_RESTART           | 0x0004    | 发生APP_FREEZE时不重启应用。 |
| NO_RESTART           | 0xFFFF  | 总是不重启应用。 |
Z
zhancaijin 已提交
28 29 30 31 32 33 34

## appRecovery.SaveOccasionFlag

[enableAppRecovery](#apprecoveryenableapprecovery)接口状态保存时机选项参数。

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

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

## appRecovery.SaveModeFlag  

[enableAppRecovery](#apprecoveryenableapprecovery)接口状态保存方式的参数。

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

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

## appRecovery.enableAppRecovery

enableAppRecovery(restart?: RestartFlag, saveOccasion?: SaveOccasionFlag, saveMode?: SaveModeFlag) : void;

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

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

**参数:**

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

**示例:**
    
Z
zhancaijin 已提交
69
```ts
Z
zhancaijin 已提交
70 71 72 73 74 75 76 77 78 79 80
export default class MyAbilityStage extends AbilityStage {
    onCreate() {
        appRecovery.enableAppRecovery(RestartFlag::ALWAYS_RESTART, SaveOccasionFlag::SAVE_WHEN_ERROR, SaveModeFlag::SAVE_WITH_FILE);
    }
}
```

## appRecovery.restartApp

restartApp(): void;

M
m00512953 已提交
81
重启当前App进程,可以配合[errorManager](js-apis-app-ability-errorManager.md)相关接口使用。
Z
zhancaijin 已提交
82 83 84 85 86 87

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


**示例:**
    
Z
zhancaijin 已提交
88
```ts
Z
zhancaijin 已提交
89 90 91 92 93 94 95 96 97 98 99 100 101
var observer = {
    onUnhandledException(errorMsg) {
        console.log('onUnhandledException, errorMsg: ', errorMsg)
        appRecovery.restartApp();
    }
}

```

## appRecovery.saveAppState

saveAppState(): boolean;

M
m00512953 已提交
102
保存当前App状态,可以配合[errorManager](js-apis-app-ability-errorManager.md)相关接口使用
Z
zhancaijin 已提交
103 104 105 106 107 108 109 110 111 112 113

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

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 保存成功与否。 |

**示例:**
    
Z
zhancaijin 已提交
114
```ts
Z
zhancaijin 已提交
115 116 117 118 119 120 121
var observer = {
    onUnhandledException(errorMsg) {
        console.log('onUnhandledException, errorMsg: ', errorMsg)
        appRecovery.saveAppState();
    }
}
```