Зарегистрировать приемник трансляции из сервиса в новой теме

У меня есть радиоприемник, который запускает длительную операцию (процесс загрузки). В коде сервиса, запущенного из класса Activity, мне нужно зарегистрировать этот получатель в новом потоке.

Я проверил этот постЗапущены ли Android BroadcastReceivers в новом потоке? но мне нужен более конкретный пример использования Context.registerReceiver (получатель BroadcastReceiver, фильтр IntentFilter, String broadcastPermission, планировщик обработчика)

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

Большое спасибо. RA

 Aashish Bhatnagar21 мая 2012 г., 11:04
пожалуйста, уточни, если возможно, добавь немного кода
 ρяσѕρєя K21 мая 2012 г., 11:07
читать комментарии в / Stackoverflow.com вопросы / 5394950 / ... пост вы получите ответ нет, это невозможно без метода onRecive вызывается в основной ветке
 Rami21 мая 2012 г., 11:11
Привет Aashish, Спасибо за ваше замечание. На самом деле я прошу код :) Я не знаю точно, как зарегистрировать приемник вещания в новой теме. Мне нужен пример, если это возможно. Я искал в сети, как это сделать, но я не смог найти такой пример. Я понял, что 1) мы должны создать новый поток и 2) обработчик для этого потока, а затем 3) зарегистрировать получателя в новом потоке, используя обработчик. Может ли кто-нибудь дать мне короткий пример или объяснение того, как это сделать? Благодарност

Ответы на вопрос(1)

Решение Вопроса

В твоем сервисеonCreate():

private Handler handler; // Handler for the separate Thread

HandlerThread handlerThread = new HandlerThread("MyNewThread");
handlerThread.start();
// Now get the Looper from the HandlerThread so that we can create a Handler that is attached to
//  the HandlerThread
// NOTE: This call will block until the HandlerThread gets control and initializes its Looper
Looper looper = handlerThread.getLooper();
// Create a handler for the service
handler = new Handler(looper);
// Register the broadcast receiver to run on the separate Thread
registerReceiver (myReceiver, intentFilter, broadcastPermission, handler);
 Rami21 мая 2012 г., 11:51
Примечание: я получил сообщение о том, что Handler (looper, this) не определен, и что мне нужно удалить аргумент «this» или привести его к Callback. Я удалил этот аргумент, и он работает. Спасибо. RA
 David Wasser21 мая 2012 г., 11:52
Ах, прости за это. Я скопировал этот код из одного из моих сервисов, и этот сервис реализовал сам обратный вызов handleMessage (). Вот почеthisараметр @ был там. Рад быть полезным.
 Rami21 мая 2012 г., 11:41
Привет, Дэвид, большое спасибо! это работает сейчас :) Я очень ценю вашу помощь.

Ваш ответ на вопрос