当需要打开一个URL时,常规操作是用系统浏览器打开,很方便、便捷,不足之处就是只能显示,无法交互。使用SDK提供的WebView可以解决这一点,自然也需要多做一些额外的工作。
1. 简介
简单说,WebView就是一个具备基础功能浏览器,不想市面上的浏览器那样,加入了各种定制化功能。其内部基于webkit引擎,低版本和高版本采用了不同的webkit版本内核,4.4后使用了Chrome内核。而webkit又是什么呢?它是一个开源的web浏览器引擎,即浏览器内核。当我们请求一个URL后,服务器返回来的是一个个文件,如html,css,等,浏览器的工作,就是把这些文件渲染成易读的形式展现给我们,不同的形式、不同的颜色、不同的交互,等。关于简介,就说这么多。
2. 使用
- 创建
 作为一个控件,和其他控件一样,可以在布局文件中声明,后在使用时代码中获取。也可以在代码中直接创建,然后添加到布局中
- 基本方法1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12// 同步页面状态到webview,使其可以正常响应,同时在不需要的时候暂停一些动作节省系统资源,如DOM解析,JS执行等 
 webView.onResume();
 webView.onPause();
 // 暂停webview的layout,parsing,jstimer
 // 这是针对全局的,而不单单是当前的webview
 webView.pauseTimers();
 webView.resumeTimers();
 // 避免webview在销毁时还在加载导致泄漏,如音乐或视频,所以先将其移出,再执行销毁
 rootLayout.removeView(webView);
 webView.destroy();
- 前进后退按下返回键时,Activity会先消费掉此事件,而退出页面,若想按下返回执行webView的后退操作,则需要传递事件给WebView1 
 2
 3
 4
 5
 6webView.canGoBakc(); 
 webView.goBack();
 webView.canGoForward();
 webView.goForward();
 // 负数后退,正数则前进
 webView.goBackOrForwardd(int steps);1 
 2
 3public void onBackPressed() { 
 webView.goBack();
 }
- 清除1 
 2
 3
 4
 5
 6
 7// 内核缓存是全局的,所以该操作针对的是全局应用 
 webView.clearCache(true);
 // 访问记录
 webView.clearHistory();
 webView.clearFormData();
3. 常用类之WebSettings
用来配置一些和webkit内核相关的属性
| 1 | WebSettings settings = webView.getSettings(); | 
4. 常用类之WebViewClient
主要用来设定WebView的通知、请求事件,如
| 1 | onLoadResource | 
5. 常用类之WebChromeClient
主要用来辅助WebView处理对话框、网站图标、标题,加载进度等,如
| 1 | onCloseWindow |