HarmonyOS 鸿蒙Next 使用javaScriptProxy把js端的参数传递给ArkTS端 数据更新很慢为啥呢

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

HarmonyOS 鸿蒙Next 使用javaScriptProxy把js端的参数传递给ArkTS端 数据更新很慢为啥呢 大家好,我使用javaScriptProxy把js端的参数传递给ArkTS端,发现js那边触发事件执行函数后,ui这端接收更新数据要好久,这个为啥呢,怎么处理呢

6 回复

需要更多信息了解实现细节!

更多关于HarmonyOS 鸿蒙Next 使用javaScriptProxy把js端的参数传递给ArkTS端 数据更新很慢为啥呢的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


js端:

//点击获取坐标,发送给arkts
function pinchZoomSlideByAndroid(){
    //{type, target, point,pixel}
    map.addEventListener("touchstart", function (event){
        let currTouchPointCoordLon = event.point.lng
        let currTouchPointCoordLat = event.point.lat
        //调用ArkTS端函数,更新触摸点坐标
        MapWebObjectName.SetCurrTouchPointCoord(currTouchPointCoordLon, currTouchPointCoordLat);
    })
}

arkts端:

.javaJavaScriptProxy({
    object: this,
    name: "MapWebObjectName",
    methodList: ["SetCurrTouchPointCoord"],
    controller: this.webviewController
})
/**
 * html端调用该函数,更新触摸处的坐标
 */
SetCurrTouchPointCoord = (lng: string, lat: string): void => {
    try {
        console.log(LOG_TAG, 'MapPage SetCurrTouchPointCoord: ', lng, lat);
        this.currTouchPointCoordLng = lng.toString(); 
        this.currTouchPointCoordLat = lat.toString();
    }
    catch (error) {
        console.error(LOG_TAG, 'MapPage SetCurrTouchPointCoord failed with ' + error)
    }
}

没遇到过这种问题,可以提供下复现问题的最小demo吗?

不太好吧直接贴代码,有时候会出现问题。

js端:

//点击获取坐标,发送给arkts
function pinchZoomSlideByAndroid(){
    //{type, target, point,pixel}
    map.addEventListener("touchstart", function (event){
        let currTouchPointCoordLon = event.point.lng
        let currTouchPointCoordLat = event.point.lat
        //调用ArkTS端函数,更新触摸点坐标
        MapWebObjectName.SetCurrTouchPointCoord(currTouchPointCoordLon, currTouchPointCoordLat);
    })
}

arkts端:

.javaScriptProxy({
    object: this,
    name: "MapWebObjectName",
    methodList: ["SetCurrTouchPointCoord"],
    controller: this.webviewController
})
/**
 * html端调用该函数,更新触摸处的坐标
 */
SetCurrTouchPointCoord = (lng: string, lat: string): void => {
    try {
        console.log(LOG_TAG, 'MapPage SetCurrTouchPointCoord: ', lng, lat);
        this.currTouchPointCoordLng = lng.toString(); 
        this.currTouchPointCoordLat = lat.toString();
    }
    catch (error) {
        console.error(LOG_TAG, 'MapPage SetCurrTouchPointCoord failed with ' + error)
    }
}

HarmonyOS 鸿蒙Next 在使用 javascriptProxy 将 JS 端参数传递给 ArkTS 端时,如果遇到数据更新很慢的问题,可能的原因包括:

  1. 通信开销:JS 与 ArkTS 之间的通信可能涉及一定的开销,特别是在频繁传递大量数据时。这可能导致数据更新显得缓慢。

  2. 处理效率:ArkTS 端接收数据后的处理逻辑可能不够高效,导致数据更新延迟。

  3. UI 渲染:如果数据更新涉及 UI 渲染,UI 线程的繁忙程度也可能影响数据更新的速度。

  4. 资源管理:系统资源(如 CPU、内存)的紧张也可能导致数据更新变慢。

  5. 同步/异步问题:如果数据传递和处理是异步进行的,但更新 UI 是同步操作,可能会导致等待时间增加。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部