MyLocationOverlay исчезает, его нет в Resume

У меня есть mapView, к которому я добавляю MyLocationOverlay. Он отображается нормально, когда приложение запускается с нуля (проходит onCreate). Если я выйду из приложения (кнопка «Назад»), а затем снова запущу его (onResume), наложение исчезнет.

Я пытался исправить это более 10 часов. Всякие возни с повторным добавлением оверлея. Сброс накладок. Изменение местоположения карты, поэтому оно принудительно перерисовывается. Попытка вручную аннулировать или принудительно перерисовать оверлей. НИЧЕГО не получилось.

Судя по тому, как выглядит код, объект Overlay существует и все работает нормально, но его просто нет на карте.

У кого-нибудь еще есть эта проблема?

(Невероятный дроид, 2.2)


person paulpooch    schedule 10.01.2011    source источник


Ответы (2)


Если я выйду из приложения (кнопка «Назад»), а затем снова запущу его (onResume), наложение исчезнет.

Кнопка НАЗАД уничтожает действие. Когда вы запустите его снова, onCreate() будет вызван снова. Итак, вам нужно выяснить, почему иногда ваш onCreate() не может добавить оверлей.

Вот проект, который отображает оверлеи, которые не страдают от вашего проблема - возможно, это может быть полезно в качестве точки сравнения.

person CommonsWare    schedule 10.01.2011

Где-то еще в приложении у меня есть

_locationManager.requestLocationUpdates(provider, Vars.GPS_MIN_UPDATE_MILLISECS, Vars.GPS_MIN_UPDATE_METERS, _locationListener);

Комментирование этого решает проблему. Как ни странно, эта строка вызывается только один раз во время onCreate и НЕ во время onResume.

Но, похоже, возникает некоторый конфликт при прослушивании обновлений местоположения вручную (с классом, реализующим LocationListener).

Я вернусь к этому, если выясню больше.

Важный! - вероятно, это та же проблема, что и этот вопрос: GPS не обновляет местоположение после закрытия и повторного открытия приложения на Android

person paulpooch    schedule 10.01.2011
comment
Решено. Смотрите ссылку в ответе выше. Убедившись, что вы слушаете/не слушаете в onResume и onPause, вы устраните проблему. - person paulpooch; 10.01.2011