0

サーバーから情報を受信し、その情報をユーザーの画面に表示するアプリケーションがあります。情報が多いので、情報が入り次第UIを更新していきたいと思います。

送受信は別スレッドで行います。

2 つの質問:

  1. 複数の UDP パケットを最適に受信するにはどうすればよいですか? 1つのパケットを受信するための私の現在のコード

    try {
    Log.i(TAG,"Listening...");
    _dcOut.setSoTimeout(20000); 
    _dcOut.receive(packet);/* Wait to receive a datagram */
    haveDatagram = true;
     Log.d(TAG,"dc_out, received...");
    }
     catch (Exception e) { // can be just a time out
    haveDatagram = false;
         Log.d(TAG,"dc_out, failed to receive...");
     }
    
  2. 複数の UDP パケットを受信中に UI を更新することはできますか?

編集:バインドされたサービスを使用してサーバーから情報を取得しています(具体的にはAIDL)。セットアップは次のとおりです。

I: 1. 個々のオブジェクトを取得して送り返します。これはサービスの特定のインスタンスに対するものです。または 2. そのサービスのオブジェクトのリストを送り返すことができます。

私の考えでは、たとえば 5 ~ 10 個のオブジェクトのリストを送り返し、それをしばらく繰り返す必要があります。

-- このサービス設定では、パケットを受信しながら UI を更新する方法がないように感じます --

4

1 に答える 1

1

UDP パケットの受信が別のスレッドで行われている場合は、GUI に表示しても問題ありません。

コードは、UDP データの受信のみを示しています。具体的にするにはもっと情報が必要です:)

特定のポートで着信データを処理する UDPSocket は 1 つだけです。それらのすべて (パケット) は、その特定のプロセス専用のバッファーに順番に格納されます。

于 2013-08-27T16:18:02.997 に答える