codecamp

应用在故障状态下的恢复能力

appRecovery模块提供了应用在故障状态下的恢复能力。

说明

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

导入模块

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

appRecovery.RestartFlag

应用重启标志,enableAppRecovery接口重启选项参数,该类型为枚举。

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

名称说明
ALWAYS_RESTART0总是重启应用。
RESTART_WHEN_JS_CRASH0x0001发生JS_CRASH时重启应用。
RESTART_WHEN_APP_FREEZE0x0002发生APP_FREEZE时重启应用。
NO_RESTART0xFFFF总是不重启应用。

appRecovery.SaveOccasionFlag

保存条件标志,enableAppRecovery接口状态保存时的选项参数,该类型为枚举。

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

名称说明
SAVE_WHEN_ERROR0x0001当发生应用故障时保存。
SAVE_WHEN_BACKGROUND0x0002当应用切入后台时保存。

appRecovery.SaveModeFlag

状态保存标志,enableAppRecovery接口状态保存方式的参数,该类型为枚举。

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

名称说明
SAVE_WITH_FILE0x0001每次状态保存都会写入到本地文件缓存。
SAVE_WITH_SHARED_MEMORY0x0002状态先保存在内存中,应用故障退出时写入到本地文件缓存。

appRecovery.enableAppRecovery

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

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

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

参数:

参数名类型必填说明
restartRestartFlag枚举类型,发生对应故障时是否重启,默认为不重启。
saveOccasionSaveOccasionFlag枚举类型,状态保存时机,默认为故障时保存。
saveModeSaveModeFlag枚举类型,状态保存方式, 默认为文件缓存。

示例:

  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;

重启当前App进程,可以配合errorManager相关接口使用。

系统能力: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;

保存当前App状态,可以配合errorManager相关接口使用

系统能力: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. }
App管理的能力
定义环境变化信息
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

媒体组件

像素

枚举

类型

接口

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }