HarmonyOS 如何找到并关闭指定的UIAbility?

关于UIAbility,当打开多个UIAbitily时,如何找到并关闭指定的UIAbility

阅读 499
1 个回答

目前暂时无法获取到别的UIAbility,通过接口获取的上下文信息都是针对当前UIAbility的,因此无法指定关闭其他UIAbility实例,关闭当前UIAbility可通过terminateSelf接口实现,参考文档如下:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-uiabilitycontext-V5\#uiabilitycontextterminateself

虽然无法直接获取其它UIAbility,但是可以在UIAbility的onBackground中主动销毁实例。

例如通过A ablity拉起B ability,可在B的onBackground生命周期里调用terminateself来销毁当前的B实例

import { UIAbility } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

export default class EntryAbility extends UIAbility {
  onBackground() {
    try {
      this.context.terminateSelf((err: BusinessError) => {
        if (err.code) {
          // 处理业务逻辑错误
          console.error(`terminateSelf failed, code is ${err.code}, message is ${err.message}`);
          return;
        }
        // 执行正常业务
        console.info('terminateSelf succeed');
      });
    } catch (err) {
      // 捕获同步的参数错误
      let code = (err as BusinessError).code;
      let message = (err as BusinessError).message;
      console.error(`terminateSelf failed, code is ${code}, message is ${message}`);
    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进