1. 前言
在APP里面嵌套H5页面已经是一件很平常的事情了。Android是通过WebView来加载H5页面的。不过Android的WebView缺陷蛮多的,需要对其进行一些优化,不然是无法很好展示H5页面的。对于WebView,我也是研究了一段时间了,收集了很多材料,现在专门在这里汇总,方便查阅。
在2020新年来临之际,我创建了一个开源项目 AndroidWebView,该项目重在介绍WebView的基本用法、功能优化和常见问题的解决方案等等,有较详细的demo,欢迎各位star和fork。
这篇文章会不断更新的哦!现在的版本是 2020-04-30 更新的。
2. WebView详解系列
2.1 优快云博客专家“启舰”编写的系列
这是比较早的一个系列了,涉及到的内容挺多的,不过造成有点杂啦,也不是很深入,适合初步了解。
- WebView使用详解(一)——Native与JS相互调用(附JadX反编译)
- WebView使用详解(二)——WebViewClient与常用事件监听
- WebView使用详解(三)——WebChromeClient与LoadData补充
2.2 优快云博客专家“Carson_Ho”编写的系列
这个系列就比较好了,很全面,而且也比较深入。
- Android:最全面的 Webview 详解
- Android:你要的WebView与 JS 交互方式 都在这里了
- Android:你不知道的 WebView 使用漏洞
- 手把手教你构建 Android WebView 的缓存机制 & 资源预加载方案
2.3 网易考拉移动端团队编写的系列
大公司团队分享的经验,非常详细,而且都是实际开发中会遇到的问题。
2.4 简书作者“AWeiLoveAndroid”编写的系列
这个系列是AWeiLoveAndroid博主整理的WebView知识点,用于查缺补漏其实挺不错的。
- WebView深度学习(一)之WebView的基本使用以及Android和js的交互
- WebView深度学习(二)之全面总结WebView遇到的坑及优化
- WebView深度学习(三)之WebView的内存泄漏、漏洞以及缓存机制原理和解决方案
2.5 简书作者“reezy”编写的系列
总结的很详细,涉及的API也比较新,其中管理Cookie、地理位置和全屏值得看看。
3. 与JS交互
小白必看,JSBridge 初探 (这篇文章作为入门篇,我个人是觉得非常不错的,写得很全面,Android和iOS的具体交互代码都有交代)
JsBridge实现JavaScript和Java的互相调用
聊一聊 WebView 与 JS 交互方案 - 适用 Android & iOS
JavaScript调用App原生代码(iOS、Android)通用解决方案
Android WebView传字符串给JS,时好时坏,为啥?
4. 性能优化
Android的WebView控件载入网页显示速度慢的究极解决方案
5. 常见问题
5.1 简书作者“cpacm”整合的问题
5.2 地图定位
Android 使用 WebView 加载网页地图定位的大坑
5.3 视频
Android WebView 总结 —— 使用HTML5播放视频及全屏方案
WebView 视频播放,全屏按钮显示不出来,全屏后不能播放视频
5.4 拍照上传、拍视频上传、上传图片等文件
5.5 Cookie
【WebView的cookie机制 】轻松搞定WebView cookie同步问题
5.6 缓存
6. 第三方开源库
- VasSonic
- JsBridge
- AgentWeb
- CacheWebView
- ht-candywebcache-android
- 这是三端易用的现代跨平台 Javascript bridge,如果不想自建JS Bridge的话,可以使用这个库,DSBridge-Android,DSBridge-IOS