在我的 android 应用程序中,我创建了 2 个处理程序。一个处理程序收到消息并等待(调用 wait();)。此时,如果我将消息发布到第二个处理程序,它没有接收。一段时间后,我收到对话框说应用程序没有响应“强制关闭”或“等待按钮”。
我认为由于一个处理程序中的 wait() ,阻止了第二个处理程序接收消息。
请建议我解决这个问题。
在我的 android 应用程序中,我创建了 2 个处理程序。一个处理程序收到消息并等待(调用 wait();)。此时,如果我将消息发布到第二个处理程序,它没有接收。一段时间后,我收到对话框说应用程序没有响应“强制关闭”或“等待按钮”。
我认为由于一个处理程序中的 wait() ,阻止了第二个处理程序接收消息。
请建议我解决这个问题。
您应该创建两个线程并在这两个线程中的每一个中创建一个处理程序,并在两个线程的 run 方法中调用 Looper.loop
class HandlerThread1 extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
}
}
同样的方式创建 HandlerThread2 并启动两个线程。
你永远不应该在 Ui 线程中调用等待,这就是你让 App 没有响应弹出窗口的原因。您总是可以发布另一条带有持续时间而不是等待的消息