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,都使用缓存中的数据。