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