HarmonyOS 鸿蒙Next测试环境下手动切换环境变量后使用什么API主动重启APP

发布于 1周前 作者 zlyuanteng 来自 鸿蒙OS

HarmonyOS 鸿蒙Next测试环境下手动切换环境变量后使用什么API主动重启APP

【关键字】

测试环境 / 手动切换环境变量 / appRecovery.restartApp

【问题描述】

测试环境下可以手动切换环境变量,切换环境变量后重启才能生效。

1. 直接使用appRecovery.restartApp(),重启app不起作用,报错: AppRecovery not enabled

2. 先调用appRecovery.enableAppRecovery后再调用appRecovery.restartApp,报错 ScheduleRecoverApp ability is nullptr

3. 先调用appRecovery.enableAppRecovery和appRecovery.setRestartWant后再调用appRecovery.restartApp,报错 ScheduleRecoverApp ability is nullptr

请问该场景下应该使用什么API主动重启app?

【解决方案】

具体操作步骤如下:

1、module.json5中配置支持恢复的Ability。

2、新建个ets页面在onCreate中给应用赋能。

3、在module.json5中的srcEntry中配置新建ets的路径。

4、页面调用appRecovery.restartApp();。

代码配置示例如下:

/AbilityStage
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
);
let want ={
bundleName:‘com.example.testxx’,
abilityName:“EntryAbility”
}
appRecovery.setRestartWant(want)
}
}
“module”: {
“name”: “entry”,
“srcEntry”: ‘./ets/AbilityStage/AbilityStage.ets’,
…
“abilities”: [
{
“name”: “EntryAbility”,
…
“recoverable”: true,
…
//page
.onClick(() => {
appRecovery.restartApp();
})<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

说明:两次重启的间隔需要大于一分钟。

API使用参考如下:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-app-ability-apprecovery-0000001821000497

2 回复

这个文档看不了呀,提示:请使用经授权的华为账号查阅该文档

请问楼主要怎么弄

在HarmonyOS鸿蒙Next测试环境下,手动切换环境变量后,若要主动重启APP,可以使用appRecovery.restartApp API。但在使用前,需确保在module.json5中配置了支持恢复的Ability,并在应用的适当位置(如AbilityStage的onCreate方法中)调用appRecovery.enableAppRecoveryappRecovery.setRestartWant来设置重启参数。如果appRecovery.restartApp直接调用无效,请检查配置是否正确。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部