Open brandlee opened 5 years ago
public static JsBridge loadModule(@NonNull String protocol, @NonNull String readyMethod, JsModule...modules) {
return new JsBridgeImpl(protocol, readyMethod, modules);
}
JsBridge里面有个loadModule可以设置任意protocol 呀
JBUtilMethodFactory中:
public static String getUtilMethods(String loadReadyMethod) { if (injectFunc == null) { JsRunMethod[] methods = new JsRunMethod[]{new GetType(), new ParseFunction(), new OnJsBridgeReady(loadReadyMethod), new CreateID(), new CallJava(), new Printer() }; injectFunc = new StringBuffer(); for (JsRunMethod method : methods) { injectFunc.append(method.getMethod()); } } return injectFunc.toString(); }
injectFunc这个静态属性,不为空的时候不能重置,导致重新设置的loadReadyMethod这个名字无效。也就是说即使设置多次protocol或者method,只有第一次设置的生效。
JBUtilMethodFactory中:
public static String getUtilMethods(String loadReadyMethod) { if (injectFunc == null) { JsRunMethod[] methods = new JsRunMethod[]{new GetType(), new ParseFunction(), new OnJsBridgeReady(loadReadyMethod), new CreateID(), new CallJava(), new Printer() }; injectFunc = new StringBuffer(); for (JsRunMethod method : methods) { injectFunc.append(method.getMethod()); } } return injectFunc.toString(); }
injectFunc这个静态属性,不为空的时候不能重置,导致重新设置的loadReadyMethod这个名字无效。也就是说即使设置多次protocol或者method,只有第一次设置的生效。
是的,JBUtilMethodFactory里面注入了一些静态方法,避免频繁操作就缓存起来了。后续我优化下这块,多谢反馈
对于JsBridgeConfig.getSetting().setProtocol(),这个方法,貌似只能设置一次protocol,而且再也无法更改了。感觉这样不太灵活,希望能够在release的时候清空protocol的信息,或者能够支持protocol的更改