记录JsBridge

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)