首页 > 解决方案 > 离线地图在 Heremaps API (Android) 上的 SDCard 上时 MapEngine 初始化缓慢

问题描述

我在这里遇到了很大的问题:

我想在我的设备上拥有所有欧洲地图,但它们没有足够的内部存储空间来存储它们,所以我使用 SD 卡来存储它们。

问题是在初始化 MapEngine [MapEngine.getInstance().init(...)] 时,在旧设备(Honor 5X [huawei KIW-L24] 为android 6.0.1 的旧设备,但它非常随机,通常需要大约 23 秒,但有时可能需要 2 秒,其他可能需要 1 分半钟。

因此,我尝试在 android studio 上分析应用程序,但它卡在方法 com.nokia.maps.MapServiceClient.startServer 上,如附图所示:

荣耀 5X And​​roid Profiler 样例

我尝试将手机恢复出厂设置,甚至尝试过其他荣耀 5x 手机,但同样的问题正在发生。

在 logcat 上,我在 OnEngineInitListener 启动之前收到此错误(连接 WiFi、断开连接和禁用 WiFi):

24442-24442/net.gottsolutions.gps E/WifiManager: WifiServiceMessenger == null

另一方面,我在诺基亚 4.2 (Android 9.0) 上测试了相同的应用程序和相同的 SDCard,启动该方法大约需要 2 秒。

所以我决定用 SDCard 上的欧洲地图测试你的应用程序(Here WeGo),我遇到了一个类似的问题,比如我正在开发的 GPS。

附视频:

https://youtu.be/YH7w9p0NeCs

另一个问题是在初始化 MapEngine 时它​​会阻塞 UI,即使它是在另一个线程或后台服务上启动的。

我使用的 SDCard 是 Kingston 32GB UHS I。

MapEngine.getInstance().init(sdkAppContextApplicationContext, error ->
                    {
                        if (error == OnEngineInitListener.Error.NONE)
                        {
                            if (ISDKMapEngineListener != null)
                                ISDKMapEngineListener.onSDKReady();
                        } else
                        {
                            Log.e("MapEngine", "Failed to initialize MapEngine: " + error);
                        }
                    });

标签: androidhere-api

解决方案


您能否尝试在 turnOnWifi() 中传递上下文,例如来自 MainActivity 的 turnOnWifi(sdkAppContextApplicationContext)

wifi_manager =(WifiManager)sdkAppContextApplicationContext.getSystemService(Context.WIFI_SERVICE);
wifi_manager.setWifiEnabled(true); 
Thread.sleep(2000L);

推荐阅读