关于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>

 

具体地址:http://x5.tencent.com/tbs/technical.html#/detail/sdk/1/a59880aa-06a6-4eca-aad0-836778652f895yyi

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值