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
网友评论