Проблемы с производительностью ItemizedOverlay.draw () - PullRequest
1 голос
/ 22 мая 2011

У меня есть класс:

public class WaypointOverlay extends ItemizedOverlay<OverlayItem>

Он переопределяет draw() метод ItemizedOverlay.
В моей деятельности у меня есть карта с множеством наложенных элементов, а также список,Из вывода traceviewer и logcat я заметил, что MapView.onDraw() вызывался много раз, даже когда карта остается нетронутой.Это привело к действительно не отвечающему списку и карте (когда мой класс WaypointOverlay просто возвращается с этих вызовов onDraw, все работает хорошо)

Как я могу сделать так, чтобы вызовы onDraw происходили реже -в идеале только когда MapView меняет диапазон?В onDraw я попытался проверить, имеет ли MapView тот же самый интервал широты / долготы, что и в последнем вызове onDraw, и рисовать только в том случае, если они разные.Это привело к тому, что OverlayItems появлялся только во время панорамирования или масштабирования карты.

Есть идеи по улучшению производительности?

1 Ответ

1 голос
/ 22 мая 2011

Я думаю, что мог решить эту проблему (по крайней мере, для моего случая). В моем приложении пользователь может отойти от карты, а затем вернуться к ней, все в той же деятельности. Каждый раз, когда пользователь возвращался на карту, я снова добавлял все созданные мной наложения. Это означало, что на карте было слишком много наложений - я их не видел, потому что они перекрывались. Вызов MapView.getOverlays (). Clear () сделал карту и список значительно эффективнее.

...