Отложенные действия и BroadcastReceiver - PullRequest
1 голос
/ 11 июля 2011

У меня есть случай, когда мне нужно запустить какое-то не-пользовательское действие N секунд после того, как питание было подключено к устройству.Это действие также может быть запущено пользователем через пользовательский интерфейс.

У меня есть BroadcastReceiver, определенный в AndroidManifest.xml , который прослушивает ACTION_POWER_CONNECTED .

Iесть служба, которая выполняет необходимые действия на onStartCommand .Мой вопрос - как правильно запустить эту службу в случае, когда действие запускается трансляцией?

Я имею в виду два варианта:

  1. One-Задача таймера выстрела.Однако я думаю, что это может быть неправильно, потому что, согласно документам, я не смог запустить какие-либо асинхронные задачи из BroadcastReceiver.

  2. Редизайн сервиса:

    • запускать действие по onStartCommand , если действие было инициировано пользователем
    • запускать таймери выполнять действие при срабатывании таймера - та же логика, что и в 1., но внутри службы - если действие было инициировано трансляцией.

Я склонен к 2. Это сделает коднемного сложнее, но, кажется, это только правильный путь.

-Lev

1 Ответ

1 голос
/ 11 июля 2011

Правильный путь # 2.Это потому, что как только вы уйдете onReceive процесс приложения может быть убит.И ваш TimerTask не поможет в этом случае.

В качестве альтернативного решения используйте AlarmManager и его функцию set для планирования ожидающего обслуживаниянамерение.Это, вероятно, лучшее решение в вашем случае.

...