Это зависит от того, как и где вы хотите развернуть свое приложение.По моему опыту, это сводится к
- , когда вы создаете приложение для конкретного случая использования, когда разряд батареи имеет значение, а не точные результаты (демонстрационные ситуации, прототипирование, ...)
- , которые вы хотите распространятьприложение для пользователей.
В случае 1) просто создайте один сервис, который активно опрашивает датчики / веб-сервисы.Используйте AlarmManager для отправки намерения REFRESH (AlarmService.setRepeating(...)
).
Это намерение REFRESH будет перезапускать службу синхронизации каждый раз, даже если она была уничтожена системой.onStart () будет вызываться каждый раз при отправке намерения REFRESH.Вы можете выполнить сложную логику установки в onCreate (), так как она будет вызываться при каждом создании службы после ее уничтожения.ВНИМАНИЕ: Это может привести к очень быстрому разряду батареи.
В случае 2) Я бы создал несколько служб и позволил бы пользователю настраивать разные интервалы опроса для каждой службы, чтобы ограничить разрядку батареи.Я могу видеть, например, что Bluetooth должен опрашиваться более регулярно, чем GPS, так как более вероятно, что устройство Bluetooth внезапно появляется, чем пользователь, перемещающийся очень быстро.
Погода звучит очень дорого (поиск в сети, возможно, запускает сетевое соединение!)
Пожалуйста, не пытайтесь быть слишком настойчивыми с вашим приложением в случае 2).Обычно для телефона имеет смысл отключать службы памяти и питания.