應(yīng)用在故障狀態(tài)下的恢復(fù)能力

2024-01-23 12:47 更新

appRecovery模塊提供了應(yīng)用在故障狀態(tài)下的恢復(fù)能力。

說明

本模塊首批接口從API version 9開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。當(dāng)前版本僅支持單進(jìn)程中單Ability的應(yīng)用恢復(fù)。

導(dǎo)入模塊

  1. import appRecovery from '@ohos.app.ability.appRecovery';

appRecovery.RestartFlag

應(yīng)用重啟標(biāo)志,enableAppRecovery接口重啟選項(xiàng)參數(shù),該類型為枚舉。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Ability.AbilityRuntime.Core

名稱說明
ALWAYS_RESTART0總是重啟應(yīng)用。
RESTART_WHEN_JS_CRASH0x0001發(fā)生JS_CRASH時(shí)重啟應(yīng)用。
RESTART_WHEN_APP_FREEZE0x0002發(fā)生APP_FREEZE時(shí)重啟應(yīng)用。
NO_RESTART0xFFFF總是不重啟應(yīng)用。

appRecovery.SaveOccasionFlag

保存條件標(biāo)志,enableAppRecovery接口狀態(tài)保存時(shí)的選項(xiàng)參數(shù),該類型為枚舉。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Ability.AbilityRuntime.Core

名稱說明
SAVE_WHEN_ERROR0x0001當(dāng)發(fā)生應(yīng)用故障時(shí)保存。
SAVE_WHEN_BACKGROUND0x0002當(dāng)應(yīng)用切入后臺(tái)時(shí)保存。

appRecovery.SaveModeFlag

狀態(tài)保存標(biāo)志,enableAppRecovery接口狀態(tài)保存方式的參數(shù),該類型為枚舉。

系統(tǒng)能力:以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.Ability.AbilityRuntime.Core

名稱說明
SAVE_WITH_FILE0x0001每次狀態(tài)保存都會(huì)寫入到本地文件緩存。
SAVE_WITH_SHARED_MEMORY0x0002狀態(tài)先保存在內(nèi)存中,應(yīng)用故障退出時(shí)寫入到本地文件緩存。

appRecovery.enableAppRecovery

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

使能應(yīng)用恢復(fù)功能,參數(shù)按順序填入。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.Core

參數(shù):

參數(shù)名類型必填說明
restartRestartFlag枚舉類型,發(fā)生對(duì)應(yīng)故障時(shí)是否重啟,默認(rèn)為不重啟。
saveOccasionSaveOccasionFlag枚舉類型,狀態(tài)保存時(shí)機(jī),默認(rèn)為故障時(shí)保存。
saveModeSaveModeFlag枚舉類型,狀態(tài)保存方式, 默認(rèn)為文件緩存。

示例:

  1. import appRecovery from '@ohos.app.ability.appRecovery';
  2. import AbilityStage from '@ohos.app.ability.AbilityStage';
  3. export default class MyAbilityStage extends AbilityStage {
  4. onCreate() {
  5. appRecovery.enableAppRecovery(
  6. appRecovery.RestartFlag.ALWAYS_RESTART,
  7. appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR,
  8. appRecovery.SaveModeFlag.SAVE_WITH_FILE
  9. );
  10. }
  11. }

appRecovery.restartApp

restartApp(): void;

重啟當(dāng)前App進(jìn)程,可以配合errorManager相關(guān)接口使用。

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.Core

示例:

  1. import appRecovery from '@ohos.app.ability.appRecovery';
  2. import errorManager from '@ohos.app.ability.errorManager';
  3. let observer = {
  4. onUnhandledException(errorMsg) {
  5. console.log('onUnhandledException, errorMsg: ', errorMsg);
  6. appRecovery.restartApp();
  7. }
  8. };
  9. try {
  10. errorManager.on('error', observer);
  11. } catch (paramError) {
  12. console.log('error: ' + paramError.code + ', ' + paramError.message);
  13. }

appRecovery.saveAppState

saveAppState(): boolean;

保存當(dāng)前App狀態(tài),可以配合errorManager相關(guān)接口使用

系統(tǒng)能力:SystemCapability.Ability.AbilityRuntime.Core

返回值:

類型說明
boolean保存成功與否。true:保存成功,false:保存失敗。

示例:

  1. import appRecovery from '@ohos.app.ability.appRecovery';
  2. import errorManager from '@ohos.app.ability.errorManager';
  3. let observer = {
  4. onUnhandledException(errorMsg) {
  5. console.log('onUnhandledException, errorMsg: ', errorMsg);
  6. appRecovery.saveAppState();
  7. }
  8. };
  9. try {
  10. errorManager.on('error', observer);
  11. } catch (paramError) {
  12. console.log('error: ' + paramError.code + ', ' + paramError.message);
  13. }
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)