美文网首页
使用 TBS X5 框架时 个别手机WebView无法正常开启

使用 TBS X5 框架时 个别手机WebView无法正常开启

作者: hyperNeobie | 来源:发表于2019-01-02 16:12 被阅读0次

背景

一开始让我用 X5 我也是拒绝的。但因为一些蜜汁问题,个别机型在不使用 X5 时 WebView 页面会乱掉或者弹窗失效,所以不得不用,于是我先参考了一下旧项目中的加载方式:

旧项目(API 21)上的加载方式是:在 Application 中的onCreate()
方法中直接执行 QbSdk.initX5Environment(getAppContext(), null);

但在新项目(API 28)上这样用时,有个别机型(比如小米 MIX2、小米 Note3)只有在首次打开 WebView 正常,第二次打开要么 WebView 加载特别慢,要么就直接 ANR 了。

原因及解决方法

出现这个问题的原因在于 TBS X5 框架是需要将 X5 内核下载到本地的,也就是说 初始化 X5 框架时必须要有相关的存储权限才能进行下载并初始化。

然而,在 API 23 (Android 6.0)之前是不需要动态加载权限的。

所以,正确的解决姿势是:
targetSdkVersion < 23,直接在 Application 中初始化;
targetSdkVersion >= 23,请求存储权限成功后再去做初始化。

最后补充一下:

关于6.0之后的权限问题:从 Android 6.0(API 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。详情请看在运行时请求权限

关于X5内核初始化方法:其实没必要起个服务来初始化,接入文档写的很清楚了,直接QbSdk.initX5Environment(getAppContext(), null); 就可以。因为initX5Environment() 内部会创建一个线程向后台查询当前可用内核版本号,这个函数内是异步执行,所以不会阻塞 App 主线程,而且这个函数内是轻量级执行,对 App 启动性能可以说是没有影响的。

相关文章

网友评论

      本文标题:使用 TBS X5 框架时 个别手机WebView无法正常开启

      本文链接:https://www.haomeiwen.com/subject/ypzlhqtx.html