如何在任意页面直接退出HarmonyOS 鸿蒙Next app

如何在任意页面直接退出HarmonyOS 鸿蒙Next app 【设备信息】Mate60

【API版本】Api13

【DevEco Studio版本】5.0.7.200

【问题描述】我想要在Component中直接退出app,返回到系统桌面,请问应该调用哪个api?

3 回复

参考以下示例:

import { BusinessError } from '@ohos.base';
import common from '@ohos.app.ability.common';

@Entry
@Component
struct Index {
  build() {
    Column() {
      Button('点击退出')
        .onClick(() => {
          let context = getContext(this) as common.UIAbilityContext;
          try {
            context.terminateSelf((err: BusinessError) => {
              if (err.code) {
                // 处理业务逻辑错误
                console.error(`failed, code is ${err.code}, message is ${err.message}`);
                return;
              }
              // 执行正常业务
              console.info('succeed');
            });
          } catch (err) {
            // 捕获同步的参数错误
            let code = (err as BusinessError).code;
            let message = (err as BusinessError).message;
            console.error(`failed, code is ${code}, message is ${message}`);
          }
        })
    }
  }
}

更多关于如何在任意页面直接退出HarmonyOS 鸿蒙Next app的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-inner-application-uiabilitycontext-V13#uiabilitycontextterminateself

UIAbilityContext.terminateSelf

terminateSelf(callback: AsyncCallback<void>): void

停止Ability自身。使用callback异步回调。仅支持在主线程调用。

说明

调用该接口后,任务中心的任务默认不会清理,如需清理,需要配置removeMissionAfterTerminate为true。

元服务API:从API version 11开始,该接口支持在元服务中使用。

在HarmonyOS(鸿蒙Next)中,要在任意页面直接退出App,可以使用AbilityContextterminateSelf()方法。该方法会终止当前的Ability(类似于Android中的Activity),从而退出App。

示例代码:

import Ability from '@ohos.application.Ability';

export default class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
        // 在需要退出的地方调用terminateSelf()
        this.context.terminateSelf();
    }
}

terminateSelf()会立即终止当前的Ability,如果这是App中唯一的Ability,App将会退出。如果App中有多个Ability,调用terminateSelf()只会终止当前的Ability,不会影响其他Ability的运行。

注意:terminateSelf()只会终止当前的Ability,不会影响其他Ability或进程。如果需要强制退出整个App,可以考虑使用ProcessManagerkillProcess()方法,但这可能会影响用户体验。

总结:在鸿蒙Next中,使用terminateSelf()方法可以在任意页面直接退出当前Ability,从而退出App。

回到顶部