2013-08-27 70 views
0

我有一個應用程序,我從服務器接收信息,然後在屏幕上爲用戶顯示該信息。由於有很多信息,我想在接收信息時更新UI。更新UI時接收多個UDP數據包

發送/接收是在一個單獨的線程上完成的。

兩個問題:

  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?

編輯: 我使用的是綁定的服務來從服務器獲取的信息(AIDL是特定的)。下面是設置:

要麼我: 1.獲得一個單獨的對象,併發送回,就是這樣的服務或 2的特定情況下,我可以發回他們的名單該服務

我的想法是,我應該發回一個說的清單,5-10個對象,並重復一段時間?

- 我覺得自己好像不是我要更新UI,同時接受這個服務包的方式setup--

回答

1

如果UDP數據包的接收是在一個單獨的線程中完成的,有應該沒有問題在您的GUI上顯示它!

您的代碼只顯示接收的UDP數據。我需要更多的信息具體:)

只有一個UDPSocket處理傳入的數據在一個特定的端口,他們將所有(數據包)按順序存儲在緩衝區中,專用於該特定進程。

+0

你能解釋一下將它們存儲在緩衝區中嗎?這是否意味着像數據包的數組列表,然後當他們被添加到列表中,我將它們從列表中刪除並處理它們? – benzabill

+0

Java緩衝區通常以Queue的形式實現。先入先出 –

+0

我編輯帖子以獲得一些附加信息 – benzabill