2012-11-12 18 views
5

Eclipse Pahoページにある最新のjarファイルを使用して、AndroidアプリケーションでMQTTを使用しています。MQTT Eclipse PahoクライアントがAndroidで接続が切断され、完了しない

一時的にQOS 1で公開して接続をチェックしています。一定のタイムアウトで配信されない場合は、MQTTを切断して再接続します。データ接続が失われた後に再び取り戻されると、私は再接続を強制します。

問題は、切断メソッドがスレッドをハングし、ゼロまたは負のタイムアウトがあっても完了しないことです。それは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) { 
      } 
     } 
    } 
} 

答えて

2

ここに提出されたバグがあります: https://bugs.eclipse.org/bugs/show_bug.cgi?id=394066(おそらく、この質問のOPによって、情報が@Vipulの場合)。ステータスは解決済みと表示されますので、新しいJARが修正で利用可能になった時点を参照してください。

4

問題は、安定版のpahoクライアントのタイミングウィンドウによるものです。パホ・リポジトリこの問題は、このバグhttps://bugs.eclipse.org/bugs/show_bug.cgi?id=394066で修正済みとマークされているので、この問題に遭遇すべきではありません。安定したブランチではなく、信頼できる開発ブランチです。

関連する問題