我在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) {
}
}
}
}