2016-07-15 2 views
0

Мой класс приложения в основном обрабатывает контекст текущей активности и другие вещи (например, показывать тосты, диалоги и т. Д.). Другая вещь, для которой я использую свой класс приложений, предназначена для регистрации широковещательных приемников. Не через контекст активности, а приложения. Что я хочу знать: Будет ли приемник вещания блокировать поток моего пользовательского интерфейса (Activity)? (Я вызываю приемник через приложение, так что это будет иметь значение?) Кроме того, есть опция, которую я могу зарегистрировать получателя через Handler (из контекста приложения). Должен ли я это сделать? Или есть ли какой-либо другой доступ, который не будет блокировать мой основной поток? Спасибо.Регистрация широковещательного приемника через контекст приложения

+0

'BroadcastReceiver' всегда работает на потоке пользовательского интерфейса. – nukeforum

ответ

0

BroadcastReceiverOnReceive() всегда вызывается в главном потоке своего процесса, если явно не просил, чтобы он был запланирован в другом потоке, используя [registerReceiver(BroadcastReceiver, IntentFilter, String, android.os.Handler)] (https://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, андроида. os.Handler)).

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

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