React Native 中 Java 与 JS 互调的原理

通信机制

在Java层与Js层的bridge分别存有相同一份模块配置表,Java与Js互相通信时,通过将里配置表中的moduleID,methodID转换成json数据的形式传递给到C++层,C++层传送到js层,通过js层的的模块配置表找到对应的方法进行执行,如果有callback,则回传给java层。

通过一个函数调用来看Java调用JS

React.png

RCTDeviceEventEmitter的emit方法是一个虚方法, 实际是被动态代理了。
最终执行者是 JavaScriptModuleInvocationHandler 的 invoke。

看图中两个绿色的地方。
Java层的方法在JS层会存在一个对应的方法。(方法不是太准确)

推荐阅读更多精彩内容