2012-11-12 100 views
5

我在Android應用程序中使用MQTT,使用在Eclipse Paho頁面上找到的最新jar。MQTT在Android上的Eclipse Paho客戶端,斷開掛起並永不完成

我手動檢查連接,通過發送在1的QOS下偶爾發佈,如果它沒有在一定的超時下發送,我斷開MQTT並重新連接。當數據連接丟失,然後恢復,我也強制重新連接。

問題是disconnect方法掛起了線程並且從未完成 - 即使是零或超時超時。它應該有一個30秒的內部超時時間,但它會持續很長時間,並且永遠不會完成。

MqttClient對象需要斷開連接,否則它會在後臺咀嚼數據。我現在正在做的是分離一個獨立的線程來斷開MQTT,然後完全創建一個新的MqttClient。它停止使用數據,但這是一個糟糕的解決方案,因爲新線程只是掛起而已。

任何想法?

編輯: 在進一步的調查似乎被阻塞在試圖在線路70停止CommsReceiver:

public void stop() throws IOException { 
    synchronized (lifecycle) { 
     //@TRACE 850=stopping receiver 
     trace.trace(Trace.FINE,850); 
     if (running) { 
      running = false; 
      try { 
       //@TRACE 851=stop: wait on lifecycle 
       trace.trace(Trace.FINE,851); 
       // Wait for the thread to finish. 
       lifecycle.wait(); // THREAD HANGS // 
      } 
      catch (InterruptedException ex) { 
      } 
     } 
    } 
} 

回答

相關問題