美文网首页
Hippy源码解析--native与js通信

Hippy源码解析--native与js通信

作者: andorid_xiao | 来源:发表于2024-04-27 00:30 被阅读0次

    hippy线程模型(android)

    • UI线程(java):主线程,操作UI

    • Dom线程(java):所有Dom操作的管理。js中对dom操作的native调用会直接转发到该线程

    • jsBridge线程(java):除Dom操作外的其他native模块调用

    • jsThread线程(java):java调用js方法时,通过该线程进程处理

    • JS线程(c++):js虚拟机执行线程

    • Worker线程(c++):c++其他任务执行线程,包括一些io操作等。

    js调用native

    hippy初始化时会将hippyCallNatives(entry.cc)方法注入js虚拟机,js通过hippyCallNatives方法(指定ModuleName以及methodName,及调用参数)将js层调用转发至c层,在c层将通过jni调用到HippyBridgeImpl中的callNatives方法,后续在callnative方法中,将会根据模块类型,选择相应的线程执行后续调用(例如,对dom操作,会转发至dom线程处理。对于非Dom的模块调用,会转发至默认的jsBridge线程进行处理 )

    • js2native.js
    • entry.cc
    • js2java.cc
    • HippyBridgeImpl.java
    • HippyBridgeManagerImpl.java

    native调用js

    java中首先通过HippyBridgeManagrImpl中的callJavaScriptModule方法在jsThread线程中进行编码等处理,随后调用HippyBridgeImpl中的callFunction方法将moduleName以及methodName等相关参数传递至c++层。CallFunctionByHeapBuffer方法将创建jsRunnerTask,该task在js线程执行,在其中会调用上层js运行时中早已注册的hippyBridge对象,完成js模块的信息转发。

    • HippyBridgeManagerImpl.java
    • HippyBridgeImpl.java
    • java2js.cc
    • native2js.js

    Hippy https://hippyjs.org/#/guide/jsi

    相关文章

      网友评论

          本文标题:Hippy源码解析--native与js通信

          本文链接:https://www.haomeiwen.com/subject/mkxaxjtx.html