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