Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
c6950151
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c6950151
编写于
11月 14, 2022
作者:
Z
zhancaijin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify aaRecovery api docs
Signed-off-by:
N
zhancaijin
<
zhancaijin1@huawei.com
>
上级
0e729992
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
57 addition
and
49 deletion
+57
-49
zh-cn/application-dev/dfx/apprecovery-guidelines.md
zh-cn/application-dev/dfx/apprecovery-guidelines.md
+48
-40
zh-cn/application-dev/dfx/figures/20221106203527.png
zh-cn/application-dev/dfx/figures/20221106203527.png
+0
-0
zh-cn/application-dev/reference/apis/js-apis-app-ability-appRecovery.md
...ion-dev/reference/apis/js-apis-app-ability-appRecovery.md
+7
-7
zh-cn/application-dev/reference/apis/js-apis-application-ability.md
...ication-dev/reference/apis/js-apis-application-ability.md
+2
-2
未找到文件。
zh-cn/application-dev/dfx/apprecovery-guidelines.md
浏览文件 @
c6950151
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
## 场景介绍
## 场景介绍
应用在运行中不可避免会产生一些非预期的行为,如运行时抛出未处理的异常和错误,违反框架的调用/运行约束。
应用在运行中不可避免会产生一些非预期的行为,如运行时抛出未处理的异常和错误,违反框架的调用/运行约束
等
。
系统默认对异常的处理方式为进程退出,如果应用使用过程中产生了用户数据,直接退出可能会导致用户工作中断,数据丢失。
系统默认对异常的处理方式为进程退出,如果应用使用过程中产生了用户数据,直接退出可能会导致用户工作中断,数据丢失。
如果使用应用故障恢复相关接口,则可对临时数据进行保存,应用退出后会重启应用并恢复先前的状态和数据,能给用户带来更好的使用体验。
如果使用应用故障恢复相关接口,则可对临时数据进行保存,应用退出后会重启应用并恢复先前的状态和数据,能给用户带来更好的使用体验。
...
@@ -29,18 +29,26 @@
...
@@ -29,18 +29,26 @@
**restartApp:**
调用后框架会杀死当前应用进程,并重新拉起处于前台的Ability,其中启动原因为APP_RECOVERY。
**restartApp:**
调用后框架会杀死当前应用进程,并重新拉起处于前台的Ability,其中启动原因为APP_RECOVERY。
### 框架故障
处
理流程示意
### 框架故障
管理
理流程示意
故障管理是应用提升用户体验的重要手段。鸿蒙应用框架为开发者提供了故障监听,故障恢复以及故障查询三种方式来管理应用的故障。
故障管理是应用提升用户体验的重要手段。鸿蒙应用框架为开发者提供了故障监听,故障恢复以及故障查询三种方式来管理应用的故障。
这里故障监听指的是errorManager,故障恢复指的是
[
appRecovery
](
../reference/apis/js-apis-app-ability-appRecovery.md
)
,故障查询指的是
[
faultLogger
](
../reference/apis/js-apis-faultLogger.md
)
。
下图中并没有标记
[
faultLogger
](
../reference/apis/js-apis-faultLogger.md
)
的调用时机,开发者可以根据应用启动时传入的
[
LastExitReason
](
../reference/apis/js-apis-application-abilityConstant.md#abilityconstant.lastexitreason
)
来决定是否调用
[
faultLogger
](
../reference/apis/js-apis-faultLogger.md
)
查询上次的故障信息。
-
故障监听指的是通过
[
errorManager
](
../reference/apis/js-apis-errorManager.md
)
注册
[
ErrorObserver
](
../reference/apis/js-apis-errorManager.md#errorobserver
)
,监听故障的发生,并通知到监听方。
-
故障恢复指的是
[
appRecovery
](
../reference/apis/js-apis-app-ability-appRecovery.md
)
,及故障发生后,将应用重启恢复到故障之前的状态。
-
故障查询指的是
[
faultLogger
](
../reference/apis/js-apis-faultLogger.md
)
通过其查询接口获取当前的故障信息。
下图中并没有标记
[
faultLogger
](
../reference/apis/js-apis-faultLogger.md
)
的调用时机,开发者可以根据应用启动时传入的
[
LastExitReason
](
../reference/apis/js-apis-application-abilityConstant.md#abilityconstantlastexitreason
)
来决定是否调用
[
faultLogger
](
../reference/apis/js-apis-faultLogger.md
)
查询上次的故障信息。
![
故障处理流程示意
](
./figures/20221106203527.png
)
![
故障处理流程示意
](
./figures/20221106203527.png
)
这里建议应用开发者使用
[
errorManager
](
../reference/apis/js-apis-errorManager.md
)
对应用的异常进行处理,处理完成后开发者可以选择调用状态保存接口并主动重启应用。
这里建议应用开发者使用
[
errorManager
](
../reference/apis/js-apis-errorManager.md
)
对应用的异常进行处理,处理完成后开发者可以选择调用状态保存接口并主动重启应用。
如果开发者没有注册
[
ErrorObserver
](
../reference/apis/js-apis-errorManager.md#errorobserver
)
也没有使能自动恢复,则按照系统的默认逻辑执行进程退出。用户可以选择从启动器再次打开应用。
如果开发者没有注册
[
ErrorObserver
](
../reference/apis/js-apis-errorManager.md#errorobserver
)
也没有使能自动恢复,则按照系统的默认逻辑执行进程退出。用户可以选择从启动器再次打开应用。
如果开发者使能了自动恢复,框架会首先检查当前故障是否支持状态保存以及开发者是否配置了状态保存,如果支持则会回调
[
Ability
](
../reference/apis/js-apis-application-ability.md#ability
)
的
[
onSaveState
](
../reference/apis/js-apis-application-ability.md#ability
.
onsavestate
)
的接口。最后重启应用。
如果开发者使能了自动恢复,框架会首先检查当前故障是否支持状态保存以及开发者是否配置了状态保存,如果支持则会回调
[
Ability
](
../reference/apis/js-apis-application-ability.md#ability
)
的
[
onSaveState
](
../reference/apis/js-apis-application-ability.md#abilityonsavestate
)
的接口。最后重启应用。
### 应用故障管理接口支持场景
### 应用故障管理接口支持场景
通常的故障类型有JS程序Crash、应用程序卡死、C++程序Crash。Crash故障时应用一般都会被关闭。Freeze故障为应用无响应卡屏场景。应用上层无需关注故障类型,底层恢复框架会根据故障类型来实现不同场景的故障管理。
| 故障名称 | 故障监听 | 状态保存 | 自动重启 | 日志查询 |
| 故障名称 | 故障监听 | 状态保存 | 自动重启 | 日志查询 |
| ----------|--------- |--------- |--------- |--------- |
| ----------|--------- |--------- |--------- |--------- |
|
[
JS_CRASH
](
../reference/apis/js-apis-faultLogger.md#faulttype
)
| 支持|支持|支持|支持|
|
[
JS_CRASH
](
../reference/apis/js-apis-faultLogger.md#faulttype
)
| 支持|支持|支持|支持|
...
@@ -53,7 +61,7 @@
...
@@ -53,7 +61,7 @@
## 开发示例
## 开发示例
###
1.
使能开启自恢复特性
### 使能开启自恢复特性
开发者需要在应用模块初始化时使能appRecovery功能。下面为示例的AbilityStage。
开发者需要在应用模块初始化时使能appRecovery功能。下面为示例的AbilityStage。
...
@@ -71,12 +79,12 @@ export default class MyAbilityStage extends AbilityStage {
...
@@ -71,12 +79,12 @@ export default class MyAbilityStage extends AbilityStage {
}
}
```
```
###
2.
数据保存和恢复
### 数据保存和恢复
在使能appRecovery功能后,开发者可以在Ability中采用主动保存状态,主动恢复或者选择被动恢复的方式使用appRecovery功能。
在使能appRecovery功能后,开发者可以在Ability中采用主动保存状态,主动恢复或者选择被动恢复的方式使用appRecovery功能。
下面为示例的MainAbility。
下面为示例的MainAbility。
####
2.1
导包
#### 导包
```
ts
```
ts
import
errorManager
from
'
@ohos.app.ability.errorManager
'
import
errorManager
from
'
@ohos.app.ability.errorManager
'
...
@@ -84,21 +92,21 @@ import appRecovery from '@ohos.app.ability.appRecovery'
...
@@ -84,21 +92,21 @@ import appRecovery from '@ohos.app.ability.appRecovery'
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
import
AbilityConstant
from
'
@ohos.app.ability.AbilityConstant
'
```
```
####
2.2
主动触发保存和恢复
#### 主动触发保存和恢复
-
定义和注册
和
[
ErrorObserver
](
../reference/apis/js-apis-errorManager.md#errorobserver
)
callback.
-
定义和注册
[
ErrorObserver
](
../reference/apis/js-apis-errorManager.md#errorobserver
)
callback
```
ts
```
ts
var
registerId
=
-
1
;
var
registerId
=
-
1
;
var
callback
=
{
var
callback
=
{
onUnhandledException
:
function
(
errMsg
)
{
onUnhandledException
:
function
(
errMsg
)
{
console
.
log
(
errMsg
);
console
.
log
(
errMsg
);
appRecovery
.
saveAppState
();
appRecovery
.
saveAppState
();
appRecovery
.
restartApp
();
appRecovery
.
restartApp
();
}
}
}
}
onWindowStageCreate
(
windowStage
)
{
onWindowStageCreate
(
windowStage
)
{
// Main window is created, set main page for this ability
// Main window is created, set main page for this ability
console
.
log
(
"
[Demo] MainAbility onWindowStageCreate
"
)
console
.
log
(
"
[Demo] MainAbility onWindowStageCreate
"
)
...
@@ -107,25 +115,25 @@ onWindowStageCreate(windowStage) {
...
@@ -107,25 +115,25 @@ onWindowStageCreate(windowStage) {
})
})
windowStage
.
loadContent
(
"
pages/index
"
,
null
);
windowStage
.
loadContent
(
"
pages/index
"
,
null
);
}
}
```
```
callback触发后 appRecovery.saveAppState() 调用后,会触发MainAbility的onSaveState(state, wantParams)函数回调。
-
数据保存
-
数据保存
callback触发appRecovery.saveAppState()调用后,会触发MainAbility的onSaveState(state, wantParams)函数回调。
```
ts
```
ts
onSaveState
(
state
,
wantParams
)
{
onSaveState
(
state
,
wantParams
)
{
// Ability has called to save app data
// Ability has called to save app data
console
.
log
(
"
[Demo] MainAbility onSaveState
"
)
console
.
log
(
"
[Demo] MainAbility onSaveState
"
)
wantParams
[
"
myData
"
]
=
"
my1234567
"
;
wantParams
[
"
myData
"
]
=
"
my1234567
"
;
return
AbilityConstant
.
onSaveResult
.
ALL_AGREE
;
return
AbilityConstant
.
onSaveResult
.
ALL_AGREE
;
}
}
```
```
-
数据恢复
-
数据恢复
callback触发后
appRecovery.restartApp()
调用后,应用会重启,重启后会走到MainAbility的onSaveState(state, wantParams)函数,保存的数据会在want参数的parameters里。
callback触发后
appRecovery.restartApp()
调用后,应用会重启,重启后会走到MainAbility的onSaveState(state, wantParams)函数,保存的数据会在want参数的parameters里。
```
ts
```
ts
storage
:
LocalStorage
storage
:
LocalStorage
...
@@ -141,7 +149,7 @@ onCreate(want, launchParam) {
...
@@ -141,7 +149,7 @@ onCreate(want, launchParam) {
}
}
```
```
-
反注册ErrorObserver callback.
-
取消注册ErrorObserver callback
```
ts
```
ts
onWindowStageDestroy
()
{
onWindowStageDestroy
()
{
...
@@ -156,7 +164,7 @@ onWindowStageDestroy() {
...
@@ -156,7 +164,7 @@ onWindowStageDestroy() {
}
}
```
```
####
2.3
被动保存和恢复
#### 被动保存和恢复
被动保存和恢复依赖恢复框架底层触发,无需注册监听ErrorObserver callback,只需实现Ability的onSaveState接口数据保存和onCreate接口数据恢复流程即可。
被动保存和恢复依赖恢复框架底层触发,无需注册监听ErrorObserver callback,只需实现Ability的onSaveState接口数据保存和onCreate接口数据恢复流程即可。
...
...
zh-cn/application-dev/dfx/figures/20221106203527.png
查看替换文件 @
0e729992
浏览文件 @
c6950151
47.4 KB
|
W:
|
H:
54.3 KB
|
W:
|
H:
2-up
Swipe
Onion skin
zh-cn/application-dev/reference/apis/js-apis-app-ability-appRecovery.md
浏览文件 @
c6950151
# appRecovery
# appRecovery
appRecovery模块提供
应用故障状态
恢复能力。
appRecovery模块提供
了应用在故障状态下的
恢复能力。
> **说明:**
> **说明:**
>
>
...
@@ -60,13 +60,13 @@ enableAppRecovery(restart?: RestartFlag, saveOccasion?: SaveOccasionFlag, saveMo
...
@@ -60,13 +60,13 @@ enableAppRecovery(restart?: RestartFlag, saveOccasion?: SaveOccasionFlag, saveMo
| 参数名 | 类型 | 必填 | 说明 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| -------- | -------- | -------- | -------- |
| restart |
[
RestartFlag
](
#apprecoveryrestartflag
)
| 否 | 发生对应故障时是否重启,默认为不重启 |
| restart |
[
RestartFlag
](
#apprecoveryrestartflag
)
| 否 | 发生对应故障时是否重启,默认为不重启
。
|
| saveOccasion |
[
SaveOccasionFlag
](
#apprecoverysaveoccasionflag
)
| 否 | 状态保存时机,默认为故障时保存 |
| saveOccasion |
[
SaveOccasionFlag
](
#apprecoverysaveoccasionflag
)
| 否 | 状态保存时机,默认为故障时保存
。
|
| saveMode |
[
SaveModeFlag
](
#apprecoverysavemodeflag
)
| 否 | 状态保存方式, 默认为文件缓存 |
| saveMode |
[
SaveModeFlag
](
#apprecoverysavemodeflag
)
| 否 | 状态保存方式, 默认为文件缓存
。
|
**示例:**
**示例:**
```
j
s
```
t
s
export
default
class
MyAbilityStage
extends
AbilityStage
{
export
default
class
MyAbilityStage
extends
AbilityStage
{
onCreate
()
{
onCreate
()
{
appRecovery
.
enableAppRecovery
(
RestartFlag
::
ALWAYS_RESTART
,
SaveOccasionFlag
::
SAVE_WHEN_ERROR
,
SaveModeFlag
::
SAVE_WITH_FILE
);
appRecovery
.
enableAppRecovery
(
RestartFlag
::
ALWAYS_RESTART
,
SaveOccasionFlag
::
SAVE_WHEN_ERROR
,
SaveModeFlag
::
SAVE_WITH_FILE
);
...
@@ -85,7 +85,7 @@ restartApp(): void;
...
@@ -85,7 +85,7 @@ restartApp(): void;
**示例:**
**示例:**
```
j
s
```
t
s
var
observer
=
{
var
observer
=
{
onUnhandledException
(
errorMsg
)
{
onUnhandledException
(
errorMsg
)
{
console
.
log
(
'
onUnhandledException, errorMsg:
'
,
errorMsg
)
console
.
log
(
'
onUnhandledException, errorMsg:
'
,
errorMsg
)
...
@@ -111,7 +111,7 @@ saveAppState(): boolean;
...
@@ -111,7 +111,7 @@ saveAppState(): boolean;
**示例:**
**示例:**
```
j
s
```
t
s
var
observer
=
{
var
observer
=
{
onUnhandledException
(
errorMsg
)
{
onUnhandledException
(
errorMsg
)
{
console
.
log
(
'
onUnhandledException, errorMsg:
'
,
errorMsg
)
console
.
log
(
'
onUnhandledException, errorMsg:
'
,
errorMsg
)
...
...
zh-cn/application-dev/reference/apis/js-apis-application-ability.md
浏览文件 @
c6950151
...
@@ -327,14 +327,14 @@ onSaveState(reason: AbilityConstant.StateType, wantParam : {[key: string]: any})
...
@@ -327,14 +327,14 @@ onSaveState(reason: AbilityConstant.StateType, wantParam : {[key: string]: any})
| 参数名 | 类型 | 必填 | 说明 |
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| -------- | -------- | -------- | -------- |
| reason |
[
AbilityConstant.StateType
](
js-apis-application-abilityConstant.md#abilityconstantstatetype
)
| 是 | 回调保存状态的原因 |
| reason |
[
AbilityConstant.StateType
](
js-apis-application-abilityConstant.md#abilityconstantstatetype
)
| 是 | 回调保存状态的原因
。
|
| wantParam | {[key:
string]:
any} | 是 | want相关参数。 |
| wantParam | {[key:
string]:
any} | 是 | want相关参数。 |
**返回值:**
**返回值:**
| 类型 | 说明 |
| 类型 | 说明 |
| -------- | -------- |
| -------- | -------- |
| AbilityConstant.OnSaveResult | 是否同意保存当前Ability的状态 |
| AbilityConstant.OnSaveResult | 是否同意保存当前Ability的状态
。
|
**示例:**
**示例:**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录