HarmonyOS如何实现重启应用

HarmonyOS如何实现重启应用


HarmonyOS
2024-08-02 11:09:56
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
richard_li_li

重启应用使用restartApp接口,不需要再用应用恢复提供的重启接口。https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-applicationcontext-V5#applicationcontextrestartapp12

以下内容请参考:

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

"abilities": [ 
{ 
  "name": "EntryAbility", 
"recoverable": true, 
} 
]

2、新建AbilityStage类,在onCreate中设置启动恢复参数。

import appRecovery from '@ohos.app.ability.appRecovery'; 
import AbilityStage from '@ohos.app.ability.AbilityStage'; 
import Want from '@ohos.app.ability.Want'; 
export default class MyAbilityStage extends AbilityStage { 
  onCreate(): void { 
    appRecovery.enableAppRecovery( 
      appRecovery.RestartFlag.ALWAYS_RESTART, 
      appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR, 
      appRecovery.SaveModeFlag.SAVE_WITH_FILE 
    ); 
    let want: Want ={ 
      bundleName:'com.example.pagesrouter', 
      abilityName:"EntryAbility" 
    } 
    appRecovery.setRestartWant(want) 
  }; 
};

3、在module.json5中的srcEntry中 配置新建的Ability,作为应用启动的ability。

"module": { 
  "name": "entry", 
  "srcEntry": "./ets/entryability/MyAbilityStage.ets",

4、页面调用。

appRecovery.restartApp(); 
onClick(() => { 
  appRecovery.restartApp(); 
})

内置CD 60秒内只能重启1次。

如果appRecovery不能满足需求,可以备份还原方案1。参考如下方案2,在terminateSelf()方法的回调中拉起自己的ability,可以多次重启。

//方案二 
this.context.terminateSelf(()=>{ 
  Logger.info("应用即将被关闭"); 
  let want: Want ={ 
    bundleName:'com.example.pagesrouter', 
    abilityName:"EntryAbility" 
  } 
  this.context.startAbility(want).then(()=>{ 
    Logger.info("应用被启动"); 
  }) 
})
分享
微博
QQ
微信
回复
2024-08-02 18:55:17
相关问题
HarmonyOS 重启应用后cookie丢失
210浏览 • 1回复 待解决
关于切换深色模式应用自动重启应用
6399浏览 • 2回复 待解决
HarmonyOS 如何通过代码重启自身App?
103浏览 • 1回复 待解决
如何重启 OceanBase 集群?
3458浏览 • 1回复 待解决
如何通过代码触发APP重启
1792浏览 • 1回复 待解决
如何手动重启 OceanBase 集群?
5118浏览 • 1回复 待解决
HarmonyOS如何代码实现打开相机应用
356浏览 • 1回复 待解决
ArkUI 横屏时应用自动重启怎么回事?
2028浏览 • 1回复 待解决
HarmonyOS应用如何实现实时数据更新?
129浏览 • 0回复 待解决
HarmonyOS 应用多主题实现方案
306浏览 • 1回复 待解决