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