Медленная инициализация MapEngine, когда автономные карты находятся на SDCard в API Heremaps (Android) - PullRequest
0 голосов
/ 04 марта 2020

У меня здесь довольно большая проблема:

Я хочу, чтобы все карты Европы были на моих устройствах, но у них недостаточно внутренней памяти, чтобы иметь их все, поэтому Я использую SD-карту для их хранения.

Проблема в том, что при инициализации MapEngine [MapEngine.getInstance (). Init (...)] загрузка занимает много времени (до тех пор, пока OnEngineInitListener выполняется) на старых устройствах (Honor 5X [huawei KIW-L24] для старого устройства с android 6.0.1, но это довольно случайно, обычно это занимает около 23 секунд, но иногда это может занять 2 секунды, в противном случае это может займет до полутора минут.

Итак, я попытался профилировать приложение на android studio, и оно зависло в методе com.nokia.maps.MapServiceClient.startServer, как показано на Прикрепленное изображение:

Honor 5X Android Образец профилировщика

Я попытался восстановить заводские настройки телефона и даже попытался использовать другие телефоны Hono 5x, и та же проблема возникает .

На logcat я получаю эту ошибку только перед Во время запуска OnEngineInitListener (с подключенным WiFi, отключенным и с отключенным WiFi):

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

С другой стороны, я протестировал то же приложение и ту же SDCard на Nokia 4.2 (Android 9.0) и для запуска этого метода потребовалось около 2 секунд.

Поэтому я решил протестировать ваше приложение (Здесь мы Go) с картами Европы на SDCard, и у меня возникла аналогичная проблема, как на GPS I развиваюсь.

Прикрепленное видео:

https://youtu.be/YH7w9p0NeCs

Другая проблема заключается в том, что при инициализации MapEngine он блокирует пользовательский интерфейс, даже если он запущен в другом потоке или в фоновом режиме.

Используемой 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);
                        }
                    });

1 Ответ

0 голосов
/ 05 марта 2020

Можете ли вы попробовать передать контекст в turnOnWifi (), например, turnOnWifi (sdkAppContextApplicationContext) из MainActivity

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