Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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