Android-сервис выполняет работу через определенные промежутки времени - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь создать службу Android, которая работает каждые X секунд в фоновом режиме.

  • Она должна работать «навсегда» до тех пор, пока пользователь не остановит ее, поэтому я предполагаю, что она должнабыть приоритетным сервисом с уведомлением, чтобы его не убили
  • Пользователь должен иметь возможность останавливать и запускать сервис, и одновременно должен работать только один сервис
  • Служба должна выполнять работу (в частности, вызывать API-интерфейс Camera2, выполнять некоторую загрузку через Интернет и т. Д.) Каждые X секунд, но в остальном бездействовать.
  • Если возможно (не обязательно), может ли служба продолжать работать независимодаже если по какой-то причине происходит сбой пользовательского интерфейса?

Должен ли я использовать службу, службу IntentService, Bound или что-то еще?Может ли класс Timer как-то работать в сотрудничестве с этим?

Что касается "периодического выполнения работы", я рассмотрел просто создание нового потока при запуске службы и перевод его в спящий режим между запросами.Но я предполагаю, что это плохая практика и создает много накладных расходов на обслуживание и отслеживание состояния вручную.Кроме того, API-интерфейсы Android, которые он должен вызывать, должны работать в главном потоке, чтобы он не работал напрямую.

...