HarmonyOS 鸿蒙Next h5和arkTs通信原理

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

HarmonyOS 鸿蒙Next h5和arkTs通信原理

  1. arkTs收到h5的消息时,此时arkTs端是子线程还是UI线程(怎么判断当前任务是在UI线程还是子线程)
  2. controller.runJavaScript() 是否必须在UI线程中调用。
  3. 我们app的主要业务都是H5的,arkTs提供基础服务。

如果有一种路径很长的场景,例如,A(H5)发起调用原生能力B(原生),请求到C(原生)获取结果,需要将C的结果传递给A, 这种情况下我该怎么设计,是否能全局持有controller,还是整个链路传递一个回调,层层传递。 4. 如果我要注入js脚本,什么时机注入合适,比如我要监控页面性能。


更多关于HarmonyOS 鸿蒙Next h5和arkTs通信原理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

1:一个应用可能会存在3种进程:主进程,扩展进程和webView渲染进程,arkts端是在主进程中,h5则在webview线程中,所以arkts和h5不在同一线程中,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/process-model-stage-V5

2:目前controller.runJavaScript()只能在UI线程中调用

3:webview初始化,会有一定耗时,为了体验建议使用全局controller + 数值传递方式实现功能

4:当前webview注入脚本,有两种方式,一种是在web组件初始化时使用JavaScriptProxy()调用。另外一种在web组件初始化完成后调用,使用registerJavaScriptProxy()接口。如果是要监控页面性能,建议使用JavaScriptProxy,在web组件初始化时调用

更多关于HarmonyOS 鸿蒙Next h5和arkTs通信原理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next中,H5(即HTML5)和ArkTS(Ark UI using TypeScript)之间的通信原理主要基于几种机制实现跨语言、跨框架的数据交换和函数调用。

H5作为Web技术栈的一部分,运行在鸿蒙系统的WebView组件中,而ArkTS则是鸿蒙原生开发框架的一部分,两者运行在不同的环境中。为了实现它们之间的通信,鸿蒙系统提供了以下几种方式:

  1. 消息总线机制:鸿蒙系统内部实现了一个消息总线,允许不同组件、不同语言框架之间通过发布/订阅模式进行通信。H5和ArkTS可以分别作为消息的发布者和订阅者,实现数据的传递。

  2. JSBridge:鸿蒙为H5提供了JSBridge接口,允许H5通过JavaScript调用原生方法,或者将消息传递给原生侧。ArkTS可以注册为这些原生方法的实现者,从而实现H5到ArkTS的通信。

  3. 共享存储:在某些场景下,H5和ArkTS可以通过读写共享存储(如文件、数据库等)来间接实现数据交换。

这些机制共同构成了H5和ArkTS在鸿蒙系统下的通信基础,使得开发者可以在不同语言框架之间灵活地传递数据和调用功能。

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

回到顶部