0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙之@ohos.app.ability.appRecovery (appRecovery)

王程 来源:jf_75796907 作者:jf_75796907 2024-02-20 16:28 次阅读

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

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

导入模块

import appRecovery from ‘@ohos.app.ability.appRecovery’;

appRecovery.RestartFlag

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

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

名称 说明
ALWAYS_RESTART 0 总是重启应用。
RESTART_WHEN_JS_CRASH 0x0001 发生JS_CRASH时重启应用。
RESTART_WHEN_APP_FREEZE 0x0002 发生APP_FREEZE时重启应用。
NO_RESTART 0xFFFF 总是不重启应用。

appRecovery.SaveOccasionFlag

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

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

名称 说明
SAVE_WHEN_ERROR 0x0001 当发生应用故障时保存。
SAVE_WHEN_BACKGROUND 0x0002 当应用切入后台时保存。

appRecovery.SaveModeFlag

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

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

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

appRecovery.enableAppRecovery

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

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

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

参数:

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

示例:

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

export default class MyAbilityStage extends AbilityStage {
    onCreate() {
        appRecovery.enableAppRecovery(
            appRecovery.RestartFlag.ALWAYS_RESTART,
            appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR,
            appRecovery.SaveModeFlag.SAVE_WITH_FILE
        );
    }
}

appRecovery.restartApp

restartApp(): void;

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

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

示例:

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

let observer = {
    onUnhandledException(errorMsg) {
        console.log('onUnhandledException, errorMsg: ', errorMsg);
        appRecovery.restartApp();
    }
};

try {
    errorManager.on('error', observer);
} catch (paramError) {
    console.log('error: ' + paramError.code + ', ' + paramError.message);
}

appRecovery.saveAppState

saveAppState(): boolean;

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

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

返回值:

类型 说明
boolean 保存成功与否。true:保存成功,false:保存失败。

示例:

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

let observer = {
    onUnhandledException(errorMsg) {
        console.log('onUnhandledException, errorMsg: ', errorMsg);
        appRecovery.saveAppState();
    }
};

try {
    errorManager.on('error', observer);
} catch (paramError) {
    console.log('error: ' + paramError.code + ', ' + paramError.message);
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8597

    浏览量

    151150
  • 鸿蒙
    +关注

    关注

    57

    文章

    2351

    浏览量

    42853
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发接口Ability框架:【@ohos.application.Ability (Ability)】

    Ability模块提供对Ability生命周期、上下文环境等调用管理的能力,包括Ability创建、销毁、转储客户端信息等。
    的头像 发表于 04-30 17:42 2267次阅读
    <b class='flag-5'>鸿蒙</b>开发接口<b class='flag-5'>Ability</b>框架:【@<b class='flag-5'>ohos.application.Ability</b> (<b class='flag-5'>Ability</b>)】

    鸿蒙开发接口Ability框架:【@ohos.ability.featureAbility (FeatureAbility模块)】

    FeatureAbility模块提供带有UI设计与用户交互的能力,包括启动新的ability、获取dataAbilityHelper、设置此Page Ability、获取当前Ability对应的窗口,连接服务等。
    的头像 发表于 05-06 16:31 1002次阅读
    <b class='flag-5'>鸿蒙</b>开发接口<b class='flag-5'>Ability</b>框架:【@<b class='flag-5'>ohos.ability</b>.featureAbility (FeatureAbility模块)】

    鸿蒙开发接口Ability框架:【@ohos.application.missionManager (missionManager)】

    表示Ability对应任务信息的枚举。
    的头像 发表于 05-08 09:19 900次阅读
    <b class='flag-5'>鸿蒙</b>开发接口<b class='flag-5'>Ability</b>框架:【@<b class='flag-5'>ohos</b>.application.missionManager (missionManager)】

    鸿蒙开发接口Ability框架:【@ohos.ability.particleAbility (particleAbility模块)】

    particleAbility模块提供了Service类型Ability的能力,包括启动、停止指定的particleAbility,获取dataAbilityHelper,连接、断开当前Ability与指定ServiceAbility等。
    的头像 发表于 05-09 10:21 718次阅读
    <b class='flag-5'>鸿蒙</b>开发接口<b class='flag-5'>Ability</b>框架:【@<b class='flag-5'>ohos.ability</b>.particleAbility (particleAbility模块)】

    鸿蒙原生应用/元服务开发-Stage模型能力接口(九)上

    @ohos.app.ability.UIAbility (UIAbility) 一、说明 UIAbility是包含UI界面的应用组件,提供组件创建、销毁、前后台切换等生命周期回调,同时也具备组件协同
    发表于 12-21 15:41

    鸿蒙Ability开发-Stage模型下Ability的创建和使用

    ); hilog.info(ENTRY_ABILITY_DOMAIN, TAG, \'%{public}s\', \'Ability onBackground\'); } } 本文内容是鸿蒙开发中
    发表于 01-08 15:34

    鸿蒙应用模型开发-更新SDK后报错解决

    变更,可以尝试替换为新的模块名(常用接口如下): 原有接口 新接口 @ohos.application.Ability @ohos.app.ability
    发表于 02-18 17:17

    跟阿斌一起学鸿蒙(2): Ability vs App?

    通信。* 4). 一个App(应用)由多个Ability(能力)组成,而这些Ability是操作系统管理的基本单元。于是,在鸿蒙OS上,如果你想* 要跟朋友聊天,你可以在手机上聊天,在
    发表于 11-30 20:56

    跟阿斌一起学鸿蒙(2): Ability vs App?

    通信。* 4). 一个App(应用)由多个Ability(能力)组成,而这些Ability是操作系统管理的基本单元。于是,在鸿蒙OS上,如果你想* 要跟朋友聊天,你可以在手机上聊天,在
    发表于 12-02 16:55

    图解鸿蒙Page Ability的LaunchType

    Ability。总之,拥有singleton模式的Page Ability将永远使用唯一的实例;这里涉及到一个栈的概念,这是HarmonyOS管理Page Ability的模式。HarmonyOS
    发表于 12-24 09:09

    OpenHarmony开发Ability架构

    生命周期更加复杂。PageAbility生命周期回调如下图所示:其他类型Ability的生命周期可参考PageAbility生命周期去除前后台切换以及onShow的部分进行理解。开发者可以在 app
    发表于 05-12 15:12

    HarmonyOS/OpenHarmony应用开发-ArkTS的Ability基类

    在Stage模型下使用。导入模块:import Ability from '@ohos.app.ability.Ability';接口说明:Ability
    发表于 03-09 15:11

    鸿蒙开发EventHub

    '@ohos.app.ability.UIAbility';export default class MainAbility extends Ability { func1(){ console.log('func1
    的头像 发表于 02-21 14:32 391次阅读
    <b class='flag-5'>鸿蒙</b>开发<b class='flag-5'>之</b>EventHub

    鸿蒙OS开发实例:【工具类封装-页面路由】

    import common from '@ohos.app.ability.common'; import router from '@ohos.router'封装app内的页面之间跳转
    的头像 发表于 03-28 16:16 917次阅读
    <b class='flag-5'>鸿蒙</b>OS开发实例:【工具类封装-页面路由】

    鸿蒙Ability Kit(程序框架服务)【Ability与ServiceExtensionAbility通信】

    本示例展示通过[IDL的方式]和 [@ohos.rpc] 等接口实现了Ability与ServiceExtensionAbility之间的通信。
    的头像 发表于 06-05 09:28 492次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>Ability</b> Kit(程序框架服务)【<b class='flag-5'>Ability</b>与ServiceExtensionAbility通信】