Вопрос по android, broadcastreceiver, android-intent, android-activity, service – Android - Остановить приемник вещания, убитый сервисом

1

Я создал приложение, которое реализует несколько широковещательных приемников и регистрирует их в службе на основе пользовательских настроек. Служба связана с действием, которое вызывает некоторые из его методов. Когда вызывается широковещательный приемник, он запускает службу (или вызывает запуск службы, если она уже запущена) и передает ему строку, сообщающую службе, что делать. Моя проблема в том, что когда активность уничтожается (кнопка «назад»), служба также уничтожается, что, в свою очередь, убивает приемников вещания.

Я знаю, что могу зарегистрировать получателей в манифесте, что будет означать проверку при вызове, чтобы увидеть, выбрал ли пользователь эту опцию. Однако одним из приемников, критичных для приложения, является «android.intent.action.HEADSET_PLUG». который может быть зарегистрирован только программно.

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

Спасибо, обкрадывать

См:stackoverflow.com/a/4806091/1317740 Может помочь. Niranjan

Ваш Ответ

1   ответ
3

in turn kills the broadcast receivers.

Если "убит" Вы имеете в виду, что пользователь закрыл ваше приложение убийцей задач или "Force Stop" в приложении «Настройки» выберите «убитый». это подходящий глагол. Однако весь ваш процесс "убит" - оно не следует цепочке событий, которые вы здесь описываете.

Если "убит" Вы имеете в виду, что пользователь вышел из вашей активности с помощью кнопки НАЗАД, потому что вы решили связываться с сервисом, а не запускать его. Если вы хотите, чтобы служба продолжала выполняться после завершения действия, вы должны использоватьstartService()и убедитесь, что есть какой-то путь, по которому пользователь может указать, что он больше не хочет эту услугу, чтобы вы знали, когда звонитьstopService().

So I guess my question is, is there a way to keep this broadcast receiver active when the service is killed?

Нет.

If not can anyone see a workaround for this issue?

Запустите свой сервис вместо (или, возможно, в дополнение к) привязки к сервису.

Похожие вопросы