Android处理程序无法接收消息

时间:2012-10-20 07:01:58

标签: android android-handler

在我的Android应用程序中,我创建了2个处理程序。一个处理程序收到消息并等待(调用wait();)。此时,如果我将消息发布到第二个处理程序,则它没有收到。一段时间后,我得到一个对话框,说应用程序没有响应“强制关闭”或“等待按钮”。

我认为因为一个处理程序中的wait(),阻止第二个处理程序接收消息。

请建议我解决这个问题。

1 个答案:

答案 0 :(得分:2)

你应该创建两个线程并在这两个线程的每一个中创建一个处理程序,并在两个线程的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线程中调用wait,这就是你得到App没有响应弹出窗口的原因。您可以随时发布另一条持续时间而非等待的消息