Я разрабатываю приложение, которое отслеживает пользователя через GPS и напоминает ему, если он пересекает платный мост.
Очевидно, мне нужно, чтобы прослушиватель местоположения GPS работал в службе, и мне также понадобится частичная блокировка пробуждения, чтобы он мог запускаться время от времени, когда телефон спит. Я также хочу, чтобы обновления GPS менялись по частоте в зависимости от расстояния от платного моста для экономии заряда батареи. Служба cwac-WakefulIntent кажется идеальной для того, чего я пытаюсь достичь.
Тем не менее, есть пара проблем, с которыми я могу столкнуться, прежде чем пойти по этому пути (извините за каламбур ;-).
Выходит ли служба WakefulIntent и освобождает wakelock после завершения doWakefulWork(), даже если я жду, пока мой прослушиватель местоположения вернет некоторые обновления GPS.
Как я могу предотвратить возврат doWakefulWork, пока я не получу обновление местоположения и не очистлю свой прослушиватель.
Что произойдет, если я все еще ожидаю обновления GPS, когда диспетчер тревог снова запускает службу, то есть до завершения doWakefulWork()?
Как сохранить данные между экземплярами службы. Могу ли я вставить массив координат GPS в SharedPrefs?
Наконец, когда я приближаюсь к платному мосту, мне нужно больше частых обновлений GPS. Управляю ли я этим с помощью doWakefulWork() или изменяя scheduleAlarms() так, чтобы он использовал setRepeating() с количеством минут, хранящихся в SharedPrefs службой. Идея здесь состоит в том, чтобы ограничить использование GPS в зависимости от близости к интересующей области.
Хотя демонстрационное приложение предоставляет шаблон для работы, мне не удалось найти надежных примеров того, как WakefulIntentService выполняет какие-либо асинхронные задания.