美文网首页
记录JsBridge

记录JsBridge

作者: hello_我的哥 | 来源:发表于2017-05-09 16:39 被阅读47次

    JsBridge:java(ios为oc)和js的互相调用的桥梁

    JS和Native交互:

    JS是基于订阅和回调来实现Js和native交互的,我们需要在java中订阅,然后Js中回调,反之也可以。

    registerHandler()用来注册一个java函数,来实现js回调的handler,也就是说当js点击某个Button的时候 会回调java的这个函数,第一个:订阅的方法名,第二个: 回调Handler ,  responseData,是js发送给java的值,function.onCallBack()会回调到js,调用js的方法function(responseData)

    函数名必须和js同名函数,注册具体执行函数,类似java实现类

    webView.registerHandler("load", new BridgeHandler() {

    @Override

    public void handler(String data, CallBackFunction function) {

    function.onCallBack( data + “java”);

    }

    });

    Js代码需要用window.WebViewJavascriptBridge.callHandler同步回调java层注册的同名函数,这和java和c库的jni调用如出一辙,方法名必须和Java层保持一致

    window.WebViewJavascriptBridge.callHandler(

    'open'

    , {'param': data }

    , function(responseData) {

    alert('Js 收到你的:'+ responseData);

    document.getElementById("open").innerHTML = "send get responseData from java, data = " + responseData;

    }

    );

    第一参数:方法名

    第二个:js调用native的请求参数

    第三个:js在被回调后具体执行方法,responseData为java层回传jsonStr.

    总结:其实说到底,js和java的交互就是一个注册,一个回调,js要调用java的话 就是js callHandler,java registerHandlers,如果 java调用js的话,就是java callHandler,js registerHandler,


    WebView:一个控件,用于加载页面

    WebViewClient:辅助WebView执行处理各种响应请求事件,比如:onPageFinish,onPageError

    WebChromeClient :主要辅助WebView处理Javascript的对话框、网站Logo、网站title、load进度等处理。

    CookieSync:是用来管理Cookie的,主要来管理cookie相关

    CookieSyncManager继承WebSyncManager,来管理同步cookie相关

    缓存:

    LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据

    LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。

    LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式

    LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.

    LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。

    相关文章

      网友评论

          本文标题:记录JsBridge

          本文链接:https://www.haomeiwen.com/subject/moabtxtx.html