Unact / yandex_mapkit

Flutter implementation of YandexMapkit
MIT License
134 stars 149 forks source link

При большом количестве полигонов серьёзные проблемы с оптимизацией #205

Closed cortrano closed 2 years ago

cortrano commented 2 years ago

Проблема заключается в следующем. Имеем достаточно большое количество точек для отрисовки полигонов. Получаем и фетчим мы их быстро (мерил через Stopwatch, это где-то 1.5 секунды), но отрисовываются на экране они только через +- 20 секунд после открытия экрана. А до этого момента - фриз без возможности что-либо делать с приложением, а иногда даже с ошибкой, что приложение не отвечает. Речь скорее про живое устройство (проверено на нескольких), потому что у эмулятора это протекает быстрее. Далее будет 3 скриншота состояний.

  1. фриз состояние где невозможно ничего делать
  2. фриз состояние где появляется сообщение о том, что приложение не отвечает (появляется не всегда)
  3. отвисло, всё работает (отвисает всегда)

state1_freezed state2_freezed state3_noraml

Пробовал смотреть в DevTools, там картина яснее не становится, 20 секунд фриза и отвисание никак в CPU Profile и Performance Timeline не видны

Screenshot 2022-03-25 at 1 14 48 PM

Примерно аналогичная картина в Dart VM Observatory, там на Таймлайн мы видим записи не дольше трёх секунд, хотя полигоны на карте появились только спустя 20 секунд.

Screenshot 2022-03-25 at 1 24 41 PM

На всякий случай приложу снимки из DevTools и из Dart VM Observatory dart_timelines.zip

Дополнительные данные: Flutter 2.10.3 Ноут с эмулятором: MacBook M1 Pro Живой андроид: Xiaomi Mi 9 (Android 11, MIUI 12.5.2)

DCrow commented 2 years ago

Добрый день!

Это проблема нативной Android библиотеки. Тут остается ждать, только когда команда Яндекс поправит ошибку. Уже похожие проблемы там были(например https://github.com/yandex/mapkit-android-demo/issues/156)