2014-10-17 7 views
2

Так что в основном это вопрос, когда я регистрирую Broadcastreceiver динамически, его необходимо незарегистрировать по адресу onDestroy. Но когда Broadcastreceiver зарегистрирован в манифесте, нужно ли его отменить?Android Broadcastreceiver не регистрируется при регистрации в манифесте?

ответ

1

Вы должны быть осторожны при добавлении широковещательного приемника, потому что не нужно broadcast receivers Слить аккумуляторную батарею.

Если вы добавите широковещательный приемник в файл манифеста Android , подразумевается, что вы собираетесь обрабатывать конкретное намерение в широковещательном приемнике и не игнорировать его.

Вы можете использовать PackageManager для включения/выключения BroadcastReceiver, указанных в манифесте. Broadcast Receiver будет запущен только тогда, когда он включен.

Для получения дополнительной информации см Android - how to unregister a receiver created in the manifest?

Существует способ, чтобы включить и отключить широковещательный приемник, который добавляется в файле манифеста.

Смотрите этот пост Android broadcast receiver: Registering/unregistering during runtime

+0

Настоящий аккумулятор! Так что да, я использую один с Bluetooth-соединением, но у моего приложения несколько действий. При регистрации в динамическом режиме он, похоже, останавливается, когда начинается другая активность, чем основная, но при регистрации в манифесте она работает идеально. Но это продолжается даже после того, как происходит 'onDestroy'. Я планировал отключить их на 'onDestroy'. Кстати, ваши ссылки очень полезны! – gkapellmann

2

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

+0

любезно пожалуйста, можно сказать, у меня, как установить манифест зарегистрированного приемника должен быть отключен? Я попробовал андроид: enabled = "false" и в onStrat() я проверил, включен ли приемник или нет, но я обнаружил, что он всегда находится в COMPONENT_ENABLED_STATE_DEFAULT – user2121

+1

@ user2121: Ну, 'android: enabled =" false "' should Работа. Вы можете изменить его программно, вызывая 'setComponentEnabledSetting()' на 'PackageManager'. – CommonsWare

Смежные вопросы