Android 使用X5内核时,优化加载速度

原文地址:腾讯X5内核预加载

最近在做Webview加载页面的时候,用到了腾讯的X5内核,但是在使用过程中发现每次点击链接时,都会有一定的延迟,之后才能跳转到对应的页面,这体验很不好。。。 所以就抽时间找问题,解决问题。

原因

通过一步一步的调试,发现在加载X5内核的时候,X5内核需要进行一些初始化,这些初始化如果不明确指出运行的线程,它就会在你启动页面的时候,默认在主线程中执行,这就导致了上面的问题出现。

解决问题

提前初始化X5内核

在Application中就对X5内核进行初始化,而且最好另外开辟服务子线程进行初始化,防止ANR问题。

最终的解决结果:

1.新增IntentService,初始化X5内核
package com.rencarehealth.mirhythm.service;

import android.app.IntentService;
import android.content.Intent;
import android.support.annotation.Nullable;

import com.tencent.smtt.sdk.QbSdk;


public class X5CorePreLoadService extends IntentService {
    private static final String TAG = X5CorePreLoadService.class.getSimpleName();

    public X5CorePreLoadService() {
        super(TAG);
    }

    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        //在这里添加我们要执行的代码,Intent中可以保存我们所需的数据,
        //每一次通过Intent发送的命令将被顺序执行
        initX5();
    }

    /**
     * 初始化X5内核
     */
    private void initX5() {
        if (!QbSdk.isTbsCoreInited()) {
            QbSdk.preInit(getApplicationContext(), null);// 设置X5初始化完成的回调接口
        }

        QbSdk.initX5Environment(getApplicationContext(), cb);
    }

    QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

        @Override
        public void onViewInitFinished(boolean arg0) {
            // TODO Auto-generated method stub
            //初始化完成回调
        }

        @Override
        public void onCoreInitFinished() {
            // TODO Auto-generated method stub
        }
    };
}
2.在application的onCreate中,启动该服务,进行初始化
 /**
     * 初始化X5内核
     */
    private void preInitX5Core() {
        //预加载x5内核
        Intent intent = new Intent(this, X5CorePreLoadService.class);
        startService(intent);
    }
3.最后,别忘了在AndroidManifest.xml中配置服务组件
  <service
            android:name=".service.X5CorePreLoadService"
            android:enabled="true"/>

OK了,再点击Web页面链接,瞬间跳转到页面加载过程!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值