brandlee
对于JsBridgeConfig.getSetting().setProtocol(),这个方法,貌似只能设置一次protocol,而且再也无法更改了。感觉这样不太灵活,希望能够在release的时候清空protocol的信息,或者能够支持protocol的更改
#23 · open · 3 comments
对于JsBridgeConfig.getSetting().setProtocol(),这个方法,貌似只能设置一次protocol,而且再也无法更改了。感觉这样不太灵活,希望能够在release的时候清空protocol的信息,或者能够支持protocol的更改
``` 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里面注入了一些静态方法,避免频繁操作就缓存起来了。后续我优化下这块,多谢反馈