关于H5游戏webview引擎的选择

近期H5游戏比较火爆,而在开发h5的app端过程中对比了好几家渠道商,发现webview多多少少存在一些问题,故发这篇文章总结一下。

1.系统webview,功能简单,加载较快,不支持webgl等功能

2.Crosswalk,支持webgl等h5功能,也支持各个平台架构。但是安装包体积庞大,会多出20-40M

3.腾讯tbs 支持webgl等h5功能,不支持x86架构,在x86机型上会使用自带的webview,难得的是tbs安装包只是增加几百k,但tbs的加载比较花时间,可做以下优化

1)预加载tbs,在启动程序时启动预加载,收到回调即加载完毕,这一步的作用是提前加载tbs,在需要的时候可以直接使用,以及判断tbs是否加载完毕。

//初始化X5
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

 @Override
 public void onViewInitFinished(boolean arg0) {
     // TODO Auto-generated method stub
     // x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
     isX5Finish = true;
     isX5Loaded = arg0;
 }

 @Override

 public void onCoreInitFinished() {
     // TODO Auto-generated method stub
 }
};
QbSdk.initX5Environment(this, cb);
复制代码

2)虽然开了预加载后面加载快了。但是程序第一次启动还是会比较慢,这是因为第一次启动时候需要初始化x5数据。可以使用腾讯提供的优化策略:多进程优化方案

a) 设置开启优化方案


// 在调用TBS初始化、创建WebView之前进行如下配置,以开启优化方案
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);
QbSdk.initTbsSettings(map);
复制代码

b) 增加Service声明

<!- 在AndroidManifest.xml中增加内核首次加载时优化Service声明; 
该Service仅在TBS内核首次Dex加载时触发并执行dex2oat任务,
任务完成后自动结束。  -->
<service
    android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"
    android:label="dexopt"
   android:process=":dexopt" >
   </service>
复制代码

具体地址:x5.tencent.com/tbs/technic…

3)最终不管如何优化,x5的加载都是需要时间的,非常不建议闪屏后的第一个页面layout中使用x5控件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值