更新UI时接收多个UDP数据包

时间:2013-08-27 16:08:11

标签: java android multithreading udp datagram

我有一个应用程序,我从服务器接收信息,然后在屏幕上为用户显示该信息。由于有很多信息,我想在收到信息时更新用户界面。

发送/接收是在一个单独的线程上完成的。

两个问题:

  1. 如何才能最好地接收多个UDP数据包? 我目前接收一个数据包的代码

    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?

  3. 编辑: 我正在使用绑定服务从服务器获取信息(AIDL是特定的)。这是设置:

    要么我: 1.获取一个单独的对象并将其发回,这就是该服务的特定实例或 2.我可以发回该服务的列表

    我的想法是,我应该发回5-10个对象的列表,并重复一段时间?

    - 我觉得在接收使用此服务设置的数据包时,我无法更新UI -

1 个答案:

答案 0 :(得分:1)

如果UDP分组的接收是在一个单独的线程上完成的,那么在GUI上显示它应该没有问题!

您的代码仅显示接收UDP数据。我需要更具体的信息:)

只有一个UDPSocket处理特定端口上的传入数据,它们将所有(数据包)按顺序存储在专用于该特定进程的缓冲区中。