Android - Лучший способ для реализации LocationListener в нескольких действиях

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

Мне интересно, какой способ является наиболее эффективным для отслеживания местоположения пользователя в нескольких действиях. Прямо сейчас я создал службу, которая реализует LocationListener и использует широковещательную рассылку для обновления статических полей lat и long в базовом классе Activity. Это означает, что служба всегда работает, что не идеально. Но если я закрою службу и перезапущу ее только тогда, когда она мне понадобится, потребуется время, чтобы найти хорошее местоположение. Мне нужны данные о местоположении в onCreate () Activity. То же самое, если я попытаюсь реализовать это в базовом классе активности. Если я постоянно регистрирую слушателя в onResume / onCreate и отменяю регистрацию в onPause (), для начала получения обновлений потребуется слишком много времени. Я также попытался создать службу, к которой можно было бы привязаться, чтобы она запускалась только тогда, когда мне нужно местоположение. Но у меня та же проблема: слишком много времени уходит на привязку к службе и начало получения обновлений.

Служба, которую я использую сейчас, работает, но, судя по всему, что я прочитал, мне не следует использовать постоянно работающую службу для таких тривиальных вещей. Но весь смысл приложения заключается в предоставлении релевантных данных на основе текущего местоположения пользователя. Итак, у меня есть служба, которая работает в фоновом режиме и периодически предоставляет обновления. Одна из основных проблем, которая заставила меня пересмотреть дизайн на этом этапе, заключается в том, что я недавно обнаружил, что onProviderEnabled () не вызывается, если пользователь запускает приложение без включения GPS, а затем включает его. В этом сценарии приложение не может распознать, что GPS был включен, чтобы начать прослушивание обновлений.

Я думал, что понял LocationManager и LocationListener, глядя на примеры, но я не могу применить его к этой ситуации, когда Мне нужны данные о местоположении для нескольких действий. Мы будем благодарны за любую помощь или совет.

40
задан d370urn3ur 25 April 2011 в 21:41
поделиться