Отправка сообщений из другого обработчика в очередь сообщений другого обработчика
Я хочу отправить из другого обработчика (не из самого обработчика LooperThread) в очередь сообщений LooperThread, но он ничего не показывает.
Thread.sleep должен запустить mHandler.
Есть идеи?
Основная деятельность
new LooperThread().start();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Handler handler = new Handler(LooperThread.mHandler.getLooper());
handler.sendEmptyMessage(3);
LooperThread
class LooperThread extends Thread {
static Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
Log.d("LooperThread","handleMessage");
}
};
Looper.loop();
}
}
1 ответ
Решение
Причина, по которой вы ничего не видели, потому что сообщение отправляется "обработчику", а не "LooperThread.mHandler", а только "LooperThread.mHandler" что-то печатает.
Мое предложение: - Используйте HandlerThread, как предложено @zapl, и удалите сон. getLooper будет блокировать, когда петлитель не готов. - Не используйте статические переменные, такие как "mHandler", и особенно в этом случае вам вообще не нужен "mHandler", чтобы получить петлитель, если вы выберете HandlerThread