X5内核初始化的那些问题

本文探讨了在Android项目中使用X5内核加速WebView加载时遇到的初始化延迟问题以及如何处理地理位置权限请求。通过在Application中初始化X5内核并在Activity中监听回调以确保H5地图定位成功,同时避免了初始化时间过长和回调方法不执行的冲突。总结了获取子线程回调结果和正确创建WebView的时间点两个关键点。
摘要由CSDN通过智能技术生成

最近呢,项目中要用到X5内核,加快webview的打开速度。还需要一个地理位置请求 onGeolocationPermissionsShowPrompt 在这里面允许地理位置。

但是呢,在对应页面的Activity里才进行初始化,第一次打开时,可能要等个10多20秒,这是不可忍受的。(其实我能忍,但是产品当着我的面打开页面,并且抱怨怎么还没显示啊,我:…)
但如果在Application进行初始化,打开Activity时,就有可能不弹出onGeolocationPermissionsShowPrompt 导致H5地图定位不成功。在Activity初始化X5,我可以在回调里才开始加载H5地图,能保证定位,就是要等待10多秒。

究其原因,是因为X5初始化是在子线程里,而我如果在Application进行初始化,在Activity里再次调用初始化和回调方法,是没有用的。如下是在Acitivity里的代码,逻辑是当X5没有初始化,就初始化,并在回调里执行方法:

        val cb: QbSdk.PreInitCallback = object : QbSdk.PreInitCallback {
   
            override fun onViewInitFinished(result: Boolean) {
   
                ii("X5Aty 1 onViewInitFinished is $result")
                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                if (isDetached) return
                if (result) {
   
                        ii("X5Aty X5引擎初始化成功&&&, 创建X5WebView result=$result")
                        setupMapSDK()
                    } else {
   
                        ii("X5引擎初始化失败---, 创建原生WebView")
                    }
            }
            override fun onCoreInitFinished() {
   }
        }
        if (!QbSdk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值