У меня есть случай, когда мне нужно запустить какое-то действие, не связанное с пользовательским интерфейсом, N секунд после того, как к устройству было подключено питание. Это действие также может быть запущено пользователем через пользовательский интерфейс.
У меня есть BroadcastReceiver, определенный в AndroidManifest.xml, который прослушивает ACTION_POWER_CONNECTED.
У меня есть служба, которая выполняет необходимые действия с onStartCommand. Мой вопрос: как правильно запустить эту службу в случае, когда действие запускается трансляцией?
Я имею в виду два варианта:
Однократная задача таймера. Однако я думаю, что это может быть неправильно, поскольку, согласно документам, я не мог запускать какие-либо асинхронные задачи из BroadcastReceiver.
Услуга редизайна:
- start action at onStartCommand, if action was triggered by user
- запустить задачу таймера и выполнить действие по таймеру - та же логика, что и в 1, но внутри службы - если действие было вызвано трансляцией.
Я склоняюсь к 2. Это немного усложнит код, но, похоже, это единственный правильный путь.
-Лев