首页 > 作文

WebView替换内核适配优化之腾讯X5

更新时间:2023-04-07 13:22:53 阅读: 评论:0

WebView替换内核适配优化之腾讯X5

Android原生的webview在对H5的支持并不是很好。而且自从Android 4.4之后,默认的浏览器内核从WebKit转化为chromium,因此适配什么的会遇到很多瓶颈。

目前可选用的内核又两种,一个是腾讯的X5,一个是crosswalk。这次采用X5,相比crosswalk,x5接入速度快且占有体积不大(crosswalk会导致安装包多20m左右)

1. 接入

详情请见:

/d/file/titlepic/ph41.1 SDK接入

jar包方式集成 您可将官网下载的jar包复制到您的App的libs目录,并且通过Add As Library的方式集成TBS SDK

Gradle方式集成 您可以在使用SDK的模块的dependencies中添加引用进行集成:

api 'com.tencent.tbs.tbssdk:sdk:43903'

1.2 权限配置

为了保障内核的动态下发和正常使用,您需要在您的AndroidManifest.xml增加如下权限:

<us-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><us-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><us-permission android:name="android.permission.ACCESS_WIFI_STATE" /><us-permission android:name="android.permission.INTERNET" /><us-permission android:name="android.permission.READ_PHONE_STATE" />

1.3 首次初始化冷启动优化

TBS内核首次使用和加载时,ART虚拟机会将Dex文件转为Oat,该过程由系统底层触发且耗时较长,很容易引起anr问题,解决方法是使用TBS的 ”dex2oat优化方案“。

(1). 设置开启优化方案

// 在调用TBS初始化、创建WebView之前进行如下配置 HashMap map = new HashMap(); map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true); map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true); QbSdk.initTbsSettings(map);

(2). 增加Service声明

在AndroidManifest.xml中增加内核首次加载时优化Service声明。

该Service仅在TBS内核首次Dex加载时触发并执行dex2oat任务,任务完成后自动结束。

<rvice android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService" android:label="dexopt" android:process=":dexopt" ></rvice>

1.4 配置网络

//允许http明文传输android:networkSecurityConfig="@xml/network_curity_config"<?xml version="1.0" encoding="utf-8"?><network-curity-config>    <ba-config cleartextTrafficPermitted="true" /></network-curity-config>

2. 编写界面

<com.tencent.smtt.sdk.WebView android:id="冬天运动@+id/full_web_webview" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" ></com.tencent.smtt.sdk.WebView>

3. 编写Activity

@Overrideprotected void onCreate(Bundle savedInstanceState) {    //冷启动优化    HashMap map = new HashMap();    map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);    map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);    QbSdk.initTbsSettings(map);    super.onCreate(savedInstanceState);    tContentView(R.layout.activity_main);    txwebView = findViewById(R.id.full_web_webview);    txwebView.onResume();    inittting();    //loadUrl中填写需要嵌入的网址    txwebView.loadUrl("http://www.baidu.com");    ·········  }

在inittting中对浏览器的tting进行设置(根据自己的要求可增加或减少):

void inittting(){    WebSettings webSetting =txwebView.getSettings();    webSetting.tJavaScriptEnabled(true);    webSetting.tJavaScriptCanOpenWindowsAutomatically(true);    webSetting.澳际中介费用tAllowFileAccess(true);    webSettin高职扩招g.tLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);    webSetting.tSupportZoom(true);    webSetting.tBuiltInZoomControls(true);    webSetting.tUWideViewPort(true);    webSetting.tSupportMultipleWindows(true);    webSetting.tAppCacheEnabled(true);    webSetting.tDomStorageEnabled(true);    webSetting.tGeolocationEnabled(true);    webSetting.tAppCacheMaxSize(Long.MAX_VALUE);    webSetting.tPluginState(WebSettings.PluginState.ON_DEMAND);    webSetting.tCacheMode(WebSettings.LOAD_NO_CACHE);    //支持通过js打开新窗口    webSetting.tJavaScriptCanOpenWindowsAutomatically(true);    webSetting.tLoadsImagesAutomatically(true); //支持自动加载图片    webSetting.tDefaultTextEncodingName("utf-8");//设置编码格式}

下面对这个x5webview监听事件和原生的web当警察好吗view没有区别:

txwebView.tWebViewClient(new WebViewClient(){        //只在当前webview中打开界面,不打开第三方界面    @Override    public boolean shouldOverrideUrlLoading(WebView webView, String s) {        webView.loadUrl(s);        return super.shouldOverrideUrlLoading(webView, 卫生保健工作总结s);    }    @Override    public void onPageStarted(WebView webView, String s, Bitmap bitmap) {        //设定加载开始的操作        super.onPageStarted(webView, s, bitmap);    }    //加载结束后的事件    @Override    public void onPageFinished(WebView webView, String s) {        //设定加载结束的操作           super.onPageFinished(webView, s);    }    //网页报错的解决办法    @Override    public void onReceivedError(WebView webView, int i, String s, String s1) {               super.onReceivedError(webView, i, s, s1);    }});

本文地址:https://blog.csdn.net/qq_43203586/article/details/107894221

本文发布于:2023-04-07 13:22:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/3e4a591b8b0faeb7d614c227b11d4510.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:WebView替换内核适配优化之腾讯X5.doc

本文 PDF 下载地址:WebView替换内核适配优化之腾讯X5.pdf

标签:内核   首次   加载   您的
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图