X5内核初始化的那些问题

最近呢,项目中要用到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

你可能感兴趣的:(Android学习,android)