Как использовать Интенты из Сервиса или Широковещательного Приемника? - PullRequest
2 голосов
/ 15 декабря 2009

Мне нужно иметь возможность обрабатывать / ловить Intents, пока моя активность закрыта. Поэтому я смотрю либо на Сервис, либо на BroadcastReceiver.

Можно ли "получить" намерения для самой службы? Я пытался найти, но не смог найти ничего полезного.

С BroadcastReceiver я не совсем уверен, как это работает вне Activity. Зависит ли это от того, что активность открыта / запущена? Может ли он работать сам по себе? Допустим, что моя активность уничтожена Android (или приложением-убийцей задач), BroadcastReceiver все еще получает намерения и обрабатывает их?

Я использовал BroadcastReceiver в качестве виджета, но на этот раз я не хочу использовать виджет.

Моя цель - заставить пользователя открыть действие, чтобы установить некоторые параметры. Оттуда они смогут закрыть действие, но я все равно смогу обработать Интенты, которые были отправлены системой.

Я все еще довольно новичок в разработке для Android, поэтому я могу быть так далеко от того места, где мне нужно быть.

Я ошибаюсь?

1 Ответ

8 голосов
/ 15 декабря 2009

Broadcast Receivers - это компоненты приложения, которые могут работать независимо от действий и служб, поэтому описанный вами вариант использования определенно поддерживается.

Если вы зарегистрируете тег intent-filter для широковещательных Интентов, которые вы хотите обработать в узле манифеста receiver, он получит все соответствующие широковещательные Интенты, даже если ваш процесс приложения полностью мертв (нет действий или служб).

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

<receiver android:name=".MyBroadcastReceiver">
  <intent-filter>
    <action android:name="com.example.project.MY_BROADCAST_ACTION" />
  </intent-filter>
</receiver>

В вашей реализации Broadcast Receiver обработчик onReceive будет вызываться, когда широковещательное действие, для которого вы указали intent-фильтр, передается.

Примечание. Существуют определенные системные широковещательные рассылки, которые вы не можете захватить таким образом, но, вообще говоря, это подход, который нужно использовать для реагирования на системные события, когда у вас не запущено действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...