HarmonyOS鸿蒙Next中关于openCustomDialog使用及新的退出方式

HarmonyOS鸿蒙Next中关于openCustomDialog使用及新的退出方式 关于openCustomDialog的使用,请参考https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-uicontext-custom-dialog-V5

关于弹框退出,官方示例是使用静态封装类,相当于全局量,截图如下:

cke_4465.png

完整示例链接https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-uicontext-custom-dialog-V5#完整示例

因为习惯了之前的对话弹框,用到时才创建(现在是通过静态类全局挂靠,或者手动赋null值管理),对于官方示例的方式不是很方便(要专门创建类,还是静态量),试了以下之前的弹框方式,通过回调控制,发现可以用(当然不知道官方后面会不会不支持这种方式),步骤如下:

1.创建builder

@Builder
function jiankuTankuang(hd:() => void){
  Column(){
    Text('建库弹框')
      .height(50)
    Button()
      .height(50)
      .width(50)
      .onClick(() => {
        hd();
      })
  }
  // .height('50%')
  // .width('50%')
  .backgroundColor('#ffe0a1a1')
}

2.创建ComponentContent

private jktk:ComponentContent<() => void> = new ComponentContent<() => void>(this.shangxiawenUI,wrapBuilder(jiankuTankuang),():void => {
    this.shangxiawenUI.getPromptAction().closeCustomDialog(this.jktk);//关闭弹框的回调
  });//第一个参数,上下文换成自己页面的上下文

3.显示弹框

this.shangxiawenUI.getPromptAction().openCustomDialog<object>(this.jktk,{autoCancel:false});//上下文换成自己页面的上下文

4.关闭弹框,通过回调控制,回调是在创建ComponentContent时传入

cke_59602.png

需要注意的是,打开弹框、关闭弹框都是异步的,可以异步执行一些自己想要的操作,例如:弹框关闭后,将ComponentContent对象赋值为空。或者直接在函数的局部域内创建ComponentContent,让GC自己管理ComponentContent对象。


更多关于HarmonyOS鸿蒙Next中关于openCustomDialog使用及新的退出方式的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中,openCustomDialog用于创建自定义弹窗,通过CustomDialogController控制显示与隐藏。开发者需定义继承CustomDialog的组件,并设置内容与样式。新的退出方式:应用可通过调用windowStage.destroyWindow销毁窗口,或使用AbilityContext.terminateSelf终止Ability,实现应用退出。

更多关于HarmonyOS鸿蒙Next中关于openCustomDialog使用及新的退出方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,openCustomDialog 的设计确实推荐使用静态类来管理对话框实例,这主要是为了确保对话框生命周期的可控性和内存安全。官方示例采用静态类封装,可以避免因页面重建或导航导致的对话框实例丢失,同时便于在多个地方统一控制。

你提到的通过回调控制的方式,在技术上是可行的,因为它利用了 ComponentContent 的回调机制。这种方式更接近传统的事件驱动模式,适合局部作用域内的对话框管理。但需要注意,如果对话框在异步操作中被引用,可能会影响垃圾回收,导致内存泄漏。

建议优先采用官方示例的静态类方式,因为它经过了充分测试,能保证最佳兼容性。如果你选择回调方式,请确保在对话框关闭后及时释放相关引用,避免长期持有。HarmonyOS Next的API设计会保持向前兼容,但未公开的用法可能存在调整风险。

回到顶部