HarmonyOS 如何在UIAbility中调用terminateSelf方法

在指导文档中有这么一段:例如调用terminateSelf()方法停止当前UIAbility实例,从而完成UIAbility实例的销毁;或者用户使用最近任务列表关闭该UIAbility实例,完成UIAbility的销毁。如何在onDestroy中调用这个方法?

HarmonyOS
2024-12-27 14:38:36
1015浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

Destroy状态在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。也就是说当触发onDestroy()的时候,已经调用了terminateSelf()方法。

如下:

import { common } from '@kit.AbilityKit';
@Entry
@Component
struct Index13 {
  build() {
    Row() {
      Column() {
        Text("销毁实例")
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;
            context.terminateSelf((err) => {
              if (err.code) {
                console.log("销毁失败")
                return;
              } else {
                console.log("生命周期+调用terminateSelf")
              }
            })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
//EntryAbility 中
export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }
  onDestroy(): void {
    console.log("生命周期+触发onDestory方法");
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

可以看到控制台打印:

04-02 17:28:04.356 17290-172 A03D00/JSAP com.examp...ation_01 I 生命周期+调用terminateSelf
04-02 17:28:04.397 17290-172 A03D00/JSAP com.examp...ation_01 I 生命周期+触发onDestory方法
  • 1.
  • 2.
分享
微博
QQ
微信
回复
2024-12-27 15:31:41
相关问题
JSBind 如何调用 JS 方法的 callback
2487浏览 • 1回复 待解决
HarmonyOS js调用webview方法
1327浏览 • 1回复 待解决