当前分析的ReactNative版本为0.61.5:
首先我们来看CatalystInstance的定义,它其实是个接口,实现类为CatalystInstanceImpl。该接口提供了Java层与JS层交互的通道。
那么该接口有哪些功能呢?
1.提供JSBundle的url;
2.JS层和Java层通信接口(invokeCallback和callFunction);
3.管理所有的JavaScriptModule;
4.管理所有的NativeModule;
5.监听Bridge的空闲状态;
6.添加JSIModule和TurboModuleManager;
一、PendingJSCall
具体代码如下:
public static class PendingJSCall {
public String mModule;
public String mMethod;
public @Nullable NativeArray mArguments;
public PendingJSCall(String module, String method, @Nullable NativeArray arguments) {
mModule = module;
mMethod = method;
mArguments = arguments;
}
void call(CatalystInstanceImpl catalystInstance) {
NativeArray arguments = mArguments != null ? mArguments : new WritableNativeArray();
catalystInstance.jniCallJSFunction(mModule, mMethod, arguments);
}
public String toString() {
return mModule
+ "."
+ mMethod
+ "("
+