Я программирую в среде Android, и у меня в моем проекте основное действие, в котором есть класс AsynkTask, и отдельно объект Thread, реализованный расширяемый интерфейс Runnable. Теперь AsynkTask и Thread можно рассматривать как два рабочих потока, управляемых основным потоком, то есть основной активностью. Как я могу сделать, если я хочу сделать возможным общение между двумя рабочими потоками, а не с основным потоком? Как я могу использовать обработчики для реализации этого? Я знаю, как использовать обработчики между основным и рабочим потоками. Я хочу знать, как использовать их только между рабочими потоками, потому что в этом случае я не могу передать обработчики конструкторов, потому что в этом случае я не могу напрямую создавать поток, передавая его как параметр обработчик, созданный основным потоком , Основной поток должен создать два рабочих потока, и они должны общаться без участия основного потока. Надеюсь, я был достаточно ясен.Связь между рабочими потоками
1
A
ответ
2
Если вы хотите использовать обработчик с рабочим потоком, вам необходимо создать Looper на этой теме, как описано в http://developer.android.com/reference/android/os/Looper.html.
Как это:
class LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
}
}
И тогда вы можете отправлять сообщения mHandler
из любого другого Thread
.
Прежде всего, спасибо за ответ. Хорошо, я могу создать этот Обработчик в одном из двух рабочих потоков. Но как я могу получить сообщение в другом? – user140888
Я бы создал обработчик в каждом рабочем потоке, что мешает вам это сделать? –
Я думал, что это необходимо для связи между двумя рабочими потоками, что обработчик, созданный одним, передан как параметр в конструкторе другого, и это моя проблема, поскольку основной поток создает экземпляры двух рабочих потоков и когда он делает это, он не знает обработчика, созданного одним, чтобы передать его как вход в другой. – user140888