Вы можете проверить уровень заряда батареи в сервисе.Думаю, я бы порекомендовал включить все (кроме батареи), а затем посмотреть, сколько времени потребуется, чтобы проверить / установить все, что предполагается для вашего приложения.Если оно меньше 50 мс, используйте BroadcastReceiver
в любом случае, когда уровень заряда батареи не имеет значения (например, время срабатывания).
Тогда, если пользователь разрешает проверку уровня заряда батареи, всегда используйте услугу.
Если выполнение всех настроек системы проверки / настройки занимает более 50 мс, всегда используйте Service
.
Я бы порекомендовал зарегистрировать BroadcastReceiver
с действием BOOT_COMPLETED
, чтобы ваше приложение могло запускаться после перезагрузки.Кроме того, я не рекомендую запускать сервис постоянно.Я бы порекомендовал использовать AlarmManager
для запуска службы каждые 10 минут или около того.Причина в том, что если вашему сервису требуется 15 секунд, чтобы сделать то, что ему нужно, он будет тратить батарею, чтобы продолжать работать все время.
Кроме того, если вы собираетесь использовать сочетание Service / BroadcastReceiver,Я бы порекомендовал создать класс (назовите его M
для методов).Тогда в M
у вас будет метод (скажем, doSomething()
), чтобы делать все, что вам нужно.Затем в Службе или Получателе вам просто нужно позвонить по номеру M.doSomething()
, чтобы вам не приходилось менять код дважды при каждом его изменении.
Дайте мне знать, если я был неясен / сбит с толкуили мне нужно что-то добавить, и я сделаю все возможное, чтобы уточнить.
РЕДАКТИРОВАТЬ :
Вам нужно будет использовать AlarmManager
для установки сигналов, Calendar
чтобы получить и установить конкретные времена / даты.https://stackoverflow.com/a/7342724/802469 поможет вам в этом процессе.Чтобы процессор ЦП устройства не работал и не мешал работе службы, вам нужно будет использовать PowerManager
.Что касается других вещей, которые вы не указали, вы сможете найти с помощью Google или просмотрев документы.WifiManager
для изменения настроек Wi-Fi.