如今安卓APP重大多都用到了WebView+H5混合开发,废话不多说,先来总结下WebView两个重要的类:
WebViewClient:类中有很多方法,帮助我们随时监听网页的加载状态
1、shouldOverrideUrlLoading(): 网页中所有的加载动作都可以通过这个方法拦截获取
2、onPageStarted():加载页面之前调用
3、onPageFinished(): 页面加载结束
4、onLoadResource() : 每次请求网络资源的时候都会调用
5、onReceivedError() : 加载网页出现错误的时候
6、onReceivedSslError() : 处理Http请求
WebChromeClient:类中的方法可以处理JS中的各种对话框(webView默认不支持网页中的对话框) 网站标题 网站图标
1、onProgressChanged(): 获得网页的加载进度
2、onReceivedTittle() : 获得WEB页面的标题
3、onJsAlert() : 支持JS的警告框
4、onJsConfirm() : 支持JS的确认框
避免WebView内存泄漏:
1、不要再xml文件中使用WebView 直接在代码中使用,并且使用ApplicationContext
2、在Activity销毁的时候,先让WebView加载null,然后从根布局中移除,然后在销毁,最后制空
@Override
protected void onDestroy() {
if (mWebView != null) {
mWebView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
mWebView.clearHistory();
((ViewGroup) mWebView.getParent()).removeView(mWebView);
mWebView.destroy();
mWebView = null;
}
super.onDestroy();
}