Android开发-WebView(四)-Webview 和 X5Webview

2,528 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

前面我们已经介绍了Webview的一些内置方法以及设置信息,我们也都知道Webview它的内核从4.4之后换成了Chrome,因此在一些安卓系统的适配上也会多了很多麻烦,但是总体来说是对原生webview的一些改善,相对于4.4之前的webkit来说,但是在开发过程中,我们会发现在打开H5,特别是页面的渲染元素比较多的情况下,js加载的样式复杂了,页面的渲染速度也会慢下来,因为毕竟还是跟纯web页面的渲染引擎还是有一定的差别的,可能是腾讯也发现了,所以他们研发了另一种内核,x5内核,也就是我们今天要介绍的x5Webview。

Webview 和 X5Webview 的区别

其实用过X5Webview的同学应该都知道,它们2个在用法上完全相同,唯一的区别就是内核了,但这也是最主要的区别,虽然说腾讯tbs研发出来这款x5webview,可以相对于原生的webview在页面加载速度上有一定的提升,但是实际使用过程中还是存在一点的兼容性问题,主要体现在视频加载的方面,当然这些兼容问题也是根据手机的厂商或者系统有一定关系,具体还是看实际的业务,如果遇到问题可以尝试切换成原生的Webview进行加载。下面就x5webview的使用做一些简单的介绍。

X5Webview的使用

具体接入指南可以参考:x5.tencent.com/docs/access…

官方提供2种接入方式,jar包和gradle引入,jar包相对简单点,直接导入就好了。

1.初始化X5webview

private void initX5WebView() {
         QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
             @Override
             public void onViewInitFinished(boolean isSuccess) {
                 //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                 Log.d("initX5WebView", "onViewInitFinished is " + isSuccess);
             }
             @Override
             public void onCoreInitFinished() {
             }
         };
         //x5内核初始化接口
         QbSdk.initX5Environment(getApplicationContext(), cb);
     }

接下来就可以直接使用了,和原生的webview一样,当然你也可以自定义一个webview,把一些通用的属性设置和回调处理封装起来,自定义的过程中导包的时候要选择com.tencent.smtt.sdk.WebView,这样使用的才是腾讯的x5内核,建议是能做到x5和原生的webview动态切换,或者使用一个参数控制来区分场景使用。具体使用就不多介绍了,和原生的webview一样,有shouldOverrideUrlLoading,setWebViewClient,setWebChromeClient,WebSettings等等一些属性设置和内置方法。