首先列一下,我在使用TBS浏览器中有遇到的问题。
- 如何确认x5内核是否成功加载
- 如果x5内核下载失败,如何处理
- 如何处理多次打开附件出现等待并且等待很久的情况
提供一些自己解决问题的方案给大家参考
如何确认x5内核是否成功加载
我们在初始化的过程中,会有两个参数需要我们传入
1、 上下文
2、 回调方法
确认x5内核是否成功加载的方法就在我们的回调方法中实现
//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
Log.d("X5", " onViewInitFinished is " + arg0);
}
@Override
public void onCoreInitFinished() {
Log.d("X5", " onCoreInitFinished @@@@@@@@@@" );
// TODO Auto-generated method stub
}
};
//x5内核初始化接口
QbSdk.initX5Environment(getApplicationContext(), cb);
如果我们的x5内核集成成功,会调用回调方法里面我们添加的日志信息,
如果没有调用,则表示我们的x5内核是集成失败的。
如果x5内核下载失败,如何处理
如果我们通过日志信息,发现我们的回调方法没有被调用。那么,我们肯定是要重新下载的。
// 监听内核的下载
QbSdk.setTbsListener(new TbsListener() {
@Override
public void onDownloadFinish(int i) {
//tbs 内核下载完成回调
Log.d("X5", " 内核下载完成" );
}
@Override
public void onInstallFinish(int i) {
//内核安装完成回调,
Log.d("X5", " 内核安装完成" );
}
@Override
public void onDownloadProgress(int i) {
//下载进度监听 百分比 : i%
Log.d("X5", " 内核下载进度:" + i );
}
});
//判断是否要自行下载内核
boolean needDownload = TbsDownloader.needDownload(this, TbsDownloader.DOWNLOAD_OVERSEA_TBS);
Log.d("X5",needDownload + "");
// 根据实际的网络情况下,选择是否下载或是其他操作
// 例如: 只有在wifi状态下,自动下载,否则弹框提示
if (needDownload){
// 启动下载
TbsDownloader.startDownload(this);
}
如何处理多次打开附件出现等待并且等待很久的情况
可能是情况是,在第一次打开附件的时候,没有关闭,导致第二次打开,第一次的资源没有被释放,出现了一直等待的情况。
解决的办法就是在我们使用x5内核的Activity中关闭我们的附件查看器。
import com.tencent.smtt.sdk.TbsReaderView;
private TbsReaderView mTbsReaderView;
@Override
protected void onDestroy() {
super.onDestroy();
if (mSuperFileView != null){
// Log.d("=== ", "onDestroy: 页面关闭销毁资源");
mSuperFileView.onStopDisplay();
}
}
以上是我个人在项目中遇到的问题,以及解决的方案。
欢迎各位朋友,讨论、指正~
网友评论