pengwei1024 / JsBridge

A simpler, extendable bidirectional communication Frame between Android WebView and Javascript
https://github.com/pengwei1024/JsBridge/wiki
Apache License 2.0
643 stars 88 forks source link

关于protocol设置的问题 #23

Open brandlee opened 5 years ago

brandlee commented 5 years ago

对于JsBridgeConfig.getSetting().setProtocol(),这个方法,貌似只能设置一次protocol,而且再也无法更改了。感觉这样不太灵活,希望能够在release的时候清空protocol的信息,或者能够支持protocol的更改

pengwei1024 commented 5 years ago
public static JsBridge loadModule(@NonNull String protocol, @NonNull String readyMethod, JsModule...modules) {
        return new JsBridgeImpl(protocol, readyMethod, modules);
    }

JsBridge里面有个loadModule可以设置任意protocol 呀

dengzhenyu commented 5 years ago

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,只有第一次设置的生效。

pengwei1024 commented 5 years ago

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里面注入了一些静态方法,避免频繁操作就缓存起来了。后续我优化下这块,多谢反馈