| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 06-May-2025 | - | 36 | 33 | ||
| entry/ | 06-May-2025 | - | 1,952 | 1,721 | ||
| hvigor/ | 06-May-2025 | - | 8 | 8 | ||
| screenshots/devices/ | 06-May-2025 | - | ||||
| .gitignore | D | 06-May-2025 | 178 | 13 | 12 | |
| README_zh.md | D | 06-May-2025 | 5.7 KiB | 129 | 104 | |
| build-profile.json5 | D | 06-May-2025 | 1.1 KiB | 43 | 42 | |
| hvigorfile.ts | D | 06-May-2025 | 160 | 2 | 1 | |
| hvigorw | D | 06-May-2025 | 2.1 KiB | 62 | 28 | |
| hvigorw.bat | D | 06-May-2025 | 2 KiB | 73 | 56 | |
| oh-package.json5 | D | 06-May-2025 | 847 | 26 | 25 | |
| ohosTest.md | D | 06-May-2025 | 1.8 KiB | 14 | 11 |
README_zh.md
1# 应用故障恢复 2 3### 介绍 4本示例展示了在应用中如何适配故障恢复相关接口。 5 6样例包含以下场景:\ 7一.单Ability自动恢复 \ 8在EntryAbility的故障触发页面触发故障,自动重启回到故障触发页面。 9 10二.多Ability自动恢复 \ 11应用中启动了EntryAbility和SecondAbility,在第二个启动的SecondAbility的故障触发页面触发故障。 \ 12自动重启到SecondAbility的故障触发页面。 \ 13从任务管理中将EntryAbility切回前台,预期能回到故障触发页面,并恢复页面上点击次数信息。 14 15三.多Ability主动恢复 \ 16应用中启动了EntryAbility和SecondAbility,在第二个启动的SecondAbility的故障触发页面触发故障。 \ 17重启时启动RecoveryAbility,让使用者选择具体启动的Ability。 18 19四.Ability后台强制终止恢复 \ 20应用中启动了EntryAbility和SecondAbility,并切入后台。\ 21系统回收该应用,再次拉起时能够恢复先前的状态。 22 23相关概念: \ 24故障:指的是应用处于无法提供服务的状态,如卡死以及崩溃。 \ 25系统强制终止:指的是由于系统或者应用的原因,系统强制终止正在运行的应用进程,并回收资源的操作。 26 27### 效果预览 28|首页|故障触发页面| 29|---|---| 30||| 31 32使用说明 33 34一.单Ability自动恢复 \ 35点击首页点击``跳转到故障触发页面`` \ 36在故障触发页面点击按钮``点击``,再点击``保存当前Ability状态``以及``触发JsError``。 \ 37以上场景预期:\ 38能够回到``故障触发页面``页面,页面上的点击次数与触发保存状态时的一致。 39 40二.多Ability自动恢复 \ 41点击首页点击跳转到``故障触发页面`` \ 42在``故障触发页面``点击``启动SecondAbility`` 43点击首页点击``跳转到故障触发页面`` \ 44在故障触发页面点击按钮``点击``,再点击``保存当前Ability状态``以及``触发JsError``。 \ 45以上场景预期:\ 46立即回到SecondAbility的故障触发页面,并恢复页面的点击次数信息。\ 47从任务管理中将EntryAbility切回前台,预期能回到故障触发页面,页面上的点击次数与触发保存状态时的一致。 48 49三.多Ability主动恢复 \ 50点击首页点击跳转到``故障触发页面`` \ 51在``故障触发页面``点击``启动SecondAbility`` 52在SecondAbility的故障触发页面点击设置重启Ability。 \ 53在SecondAbility的故障触发页面点击``触发JsError``。 \ 54以上场景预期:\ 55重启时启动RecoveryAbility。 56 57四.Ability后台强制终止恢复 \ 58点击首页点击跳转到``故障触发页面`` \ 59在``故障触发页面``点击``启动SecondAbility`` 60在SecondAbility的故障触发页面点击Counter,点击``保存当前Ability状态``,并切入后台 \ 61使用kill命令强制终止当前应用 \ 62以上场景预期:\ 63从任务管理中将EntryAbility切回前台,预期能回到故障触发页面,并恢复页面上的点击次数信息。\ 64从任务管理中将SecondAbility切回前台,预期能回到故障触发页面,并恢复页面上的点击次数信息。 65 66为避免反复拉起,两次测试的间隔至少为60秒(自动拉起的间隔为60秒)。 67### 工程目录 68``` 69entry/src/main/ 70├── cpp // 触发Native卡死代码 71│ ├── CMakeLists.txt 72│ ├── hello.cpp 73│ └── types 74│ └── libentry 75│ ├── index.d.ts 76│ └── oh-package.json5 77├── ets 78│ ├── ability 79│ │ ├── EntryAbility.ets // 测试入口Ability 80│ │ ├── RecoveryAbility.ets // 恢复引导Ability 81│ │ └── SecondAbility.ets // 测试第二Ability 82│ ├── app 83│ │ └── MyAbilityStage.ets // 用于初始化appRecovery的配置 84│ ├── common 85│ │ ├── Logger.ts // 日志 86│ │ └── TitleBar.ets // 标题 87│ └── pages 88│ ├── FaultTriggerPage.ets // 故障触发页面 89│ ├── Index.ets // 首页 90│ └── RecoveryPage.ets // 恢复页面 91``` 92 93### 具体实现 94* 使能应用恢复功能,源码参考:[MyAbilityStage.ets](entry/src/main/ets/app/MyAbilityStage.ets) 95 * 在``onCreate``中 调用[appRecovery](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/dfx/apprecovery-guidelines.md)接口使能功能 96* 配置支持恢复的Ability,源码参考:[module.json5](entry/src/main/module.json5) 97 * 在``Ability``的节点中增加``recoverable``的配置,并设置为``true`` 98* 实现恢复功能,源码参考:[EntryAbility.ets](entry/src/main/ets/ability/EntryAbility.ets) 99 * 在``onSaveState``中保存用于恢复的数据 100 * 在``onCreate``的``want``参数中恢复所需要的数据 101 102### 相关权限 103不涉及 104 105### 依赖 106无 107 108### 约束与限制 109 1101.本示例仅支持标准系统上运行,支持设备:RK3568。 111 1122.本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release) 113 1143.本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。 115 116### 下载 117 118给出单独下载本工程的命令,在代码中替换工程目录并以/结尾,如下面示例中的 **code/BasicFeature/DFX/AppRecovery/**,示例如下: 119 120如需单独下载本工程,执行如下命令: 121 122``` 123git init 124git config core.sparsecheckout true 125echo code/BasicFeature/DFX/AppRecovery/ > .git/info/sparse-checkout 126git remote add origin https://gitee.com/openharmony/applications_app_samples.git 127git pull origin master 128``` 129