1

私の Android アプリケーションでは、2 つのハンドラーを作成しました。1 つのハンドラーがメッセージを受け取り、待機中 (wait(); を呼び出す)。この時点で、2 番目の Handler にメッセージを投稿しても、受信していません。しばらくすると、アプリケーションが「強制終了」または「待機ボタン」に応答しないというダイアログ ボックスが表示されます。

1 つのハンドラーの wait() が原因で、2 番目のハンドラーがメッセージを受信するのをブロックしていると思います。

この問題の解決策を教えてください。

4

1 に答える 1

2

2 つのスレッドを作成し、これら 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 スレッドで待機を呼び出さないでください。これが、アプリが応答しないというポップアップが表示される理由です。待機の代わりに期間を指定して、いつでも別のメッセージを投稿できます

于 2012-10-20T07:15:05.623 に答える