Android开发小技巧之不再使用原生的WebView了

前言

先来说说Android官方的WebView的版本差异,在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit作为内核,而在Android 4.4及其以上Google 采用了chromium作为内核,虽然是API上面没有什么变化,但是却非常的坑开发者。虽然说更换了chromium之后,是增加了对H5等的一些友好支持,但是还不够啊,各种各样的内存泄露。我也是醉了。而且这种内存泄露还是没办法解决的。

刚开始的时候啥都不懂,认为WebView这那点东西,简单。慢慢的发现:哦,原来webView也是要清除和销毁的啊。哦,原来是WebView内部内存泄露了啊,没办法只能将WebView放进一个单独的进程了。我以为这样就能解决我的问题。

诱因

当时的问题是这样的,我们项目需要用WebView来展示一个url,里面呢,是web版的百度地图。结果就是IOS正常显示,我这边就是不行,于是我各种重写,各种注入JS。最终还是失败了。最后是在微信和UC中查看这个URL,发现真神奇,竟然可以。不知道大家有没有仔细观察,不管是QQ还是微信,打开URL的时候往下拉,都可以看到这样的话"QQ浏览器X5内核提供技术支持",于是我就在网上找啊找,终于找到了今天的主角"TBS腾讯浏览业务"。

介绍

下面来自官方的介绍


基于Android 5.0 WebView Blink内核(M37版本)适配定制优化,适配Android全部主流平台,可以在所有Android手机上使用Blink的技术能力。TBS2.2具有更好的H5/CSS3支持和性能,视频体验、网页浏览体验有大幅提升,安全能力也有进一步优化。TBS2.2已经发布,将逐步在各客户端中静默升级,无需更新微信、手机QQ、QQ空间即可使用最新的TBS2.2Blink内核。


看到没有,最强大的部分:

无需更新微信、手机QQ、QQ空间即可使用

虽说鹅厂比较流氓,但不得不说东西却是很好用,而且免费,有木有。另外好像还有UC内核,好像是要收费来着,没仔细了解。

使用

接入文档在官方有,就不写了,免得有借鉴的嫌疑。不过我会在下面写一些我自己的使用技巧。

QQ浏览器X5内核接入文档

常见问题见

技巧

  1. 在第一次用X5打开URL的时候会很卡,而且有很明显的卡顿。可以将demo中的初始化部分放到Application中或者服务中去搞,可以明显提升哦。

最后

本来是不想写这篇文章的,主要是昨天有个做java的朋友问我类似的问题,为什么在iOS上面video标签能够正常播放,在Android上面就是不行,他已经调了很久的JS,谷歌都没有解决。很明显,他这是被甩锅了,Andrid把锅甩给了后台。最后我告诉他接入这个内核,于是乎问题解决了。

作为一个开发者,拿着一个WebView,真心搞不过人家专门做浏览器的。

最后附上源码
源码

上一篇:使用阿里云容器服务Jenkins实现持续集成和Docker镜像构建(updated on 2017.3.3)


下一篇:进入面向对象的世界:类就是代码,对象是内存。