HarmonyOS 鸿蒙Next如何在无ui的类里创建ui组件

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何在无ui的类里创建ui组件

使用高德地图 创建marker图标时
BitmapDescriptorFactory.fromView(() => {
this.mapIcon();
})

@Builder
mapIcon() {
Image($rawfile(‘icon_map_video.png’))
.width(‘20vp’)
.height(‘20vp’)
}
在ui组件里正常,一旦我把事务逻辑抽出来之后,在无ui的util类里使用@Builder装饰器
BitmapDescriptorFactory.fromView(() => { mapIcon(); })
@Builder
function mapIcon() {
Image($rawfile(‘icon_map_video.png’))
.width(‘20vp’)
.height(‘20vp’)
}
之后就无法使用了


更多关于HarmonyOS 鸿蒙Next如何在无ui的类里创建ui组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-wrapbuilder-V5

可以参考下这个文档,使用wrapBuilder + 全局[@Build](/user/Build)试试呢

更多关于HarmonyOS 鸿蒙Next如何在无ui的类里创建ui组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,在无UI的类(例如服务或后台任务类)中直接创建UI组件是不被推荐且通常不可行的,因为UI组件的创建和管理应该由负责UI渲染的Activity或Ability来负责。然而,你可以通过以下几种方式间接地在无UI类中影响或更新UI:

  1. 使用Handler或LiveData:在无UI类中处理数据,然后通过Handler或LiveData将数据传递到UI线程中的Activity或Ability,再由它们来创建或更新UI组件。

  2. BroadcastReceiver:无UI类可以发送广播,而UI组件所在的Activity或Ability可以注册相应的BroadcastReceiver来接收广播并更新UI。

  3. 使用Repository或ViewModel:在MVVM架构中,可以通过Repository或ViewModel来管理数据,无UI类修改数据后,UI组件会自动更新。

  4. AIDL(Android Interface Definition Language):如果跨进程通信是必要的,可以通过AIDL定义接口,让无UI类与UI组件进行通信。

请注意,这些方法都需要确保在UI线程中更新UI组件,因为Android/HarmonyOS不允许在非UI线程中直接操作UI。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部