Обработчики Android – межпоточная связь

Как вы реализуете двустороннюю связь между двумя потоками с Handlers в Android?

У меня есть служба A, которая порождает поток B. Довольно легко общаться с B до A, это просто передать обработчик конструктору B, но как это сделать от A до B? B не имеет никакого Looper, назначенного ему автоматически.

Кто-нибудь получил ответ?

Solutions Collecting From Web of "Обработчики Android – межпоточная связь"

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

Чтобы решить проблему получения обработчика для потока, который вы только что создали (но который еще не инициализирован), см. Как создать поток Looper, а затем отправить его сообщение немедленно?

Вызовите Looper.prepare() в новом потоке, и Looper будет создан для вас для этого потока. Затем вы можете создать обработчик для перехода к другому потоку.

То есть, после вызова Looper.prepare() , Handler h = new Handler() инструкции Handler h = new Handler() создаст обработчик на Looper вашего нового потока.

http://developer.android.com/reference/android/os/Looper.html

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

1) Создайте рабочий поток, который расширяет класс Thread.
2) Инициализировать обработчик с помощью этого рабочего потока.
3) В своем методе run () подготовьте петлитель для этого потока: Looper.prepare () для привязки очереди сообщений к этому потоку и Looper.loop () для создания цикла, который будет читать сообщение и runnables из очереди сообщений Этот поток.

4) Отправьте Messgae и Runnables из обработчика потока пользовательского интерфейса в этот обработчик рабочего потока, используя post () для runnables & sendMessage () для сообщений.

Пожалуйста, обратитесь к этому руководству: Работа с фоновой работой с использованием Looper