2012-10-20 169 views
1

在我的Android應用程序中,我創建了2個處理程序。一個處理程序收到消息並等待(調用wait();)。在這一點上,如果我發佈消息給第二個處理程序,它不會收到。一段時間後,我收到對話框說應用程序沒有響應「強制關閉」或「等待按鈕」。Android Handler未收到消息

我想因爲wait()在一個處理程序中,阻止第二個處理程序接收消息。

請建議我解決這個問題。

回答

2

您應該創建兩個線程,從而在每個這兩個線程的處理程序,並調用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和啓動這兩個線程的run方法。

你不應該在Ui線程中調用等待,這是你得到應用程序沒有響應彈出的原因。您可以隨時發佈另一條消息,而不是等待

+0

感謝您的回答。它解決了我的問題。 –