2013-08-27 2 views
0

J'ai une application où je reçois des informations d'un serveur, puis je montre ces informations à l'écran pour l'utilisateur. Comme il y a beaucoup d'informations, je voudrais mettre à jour l'interface utilisateur à mesure que je reçois l'information.Réception de plusieurs paquets UDP lors de la mise à jour de l'interface utilisateur

L'envoi/la réception est effectué sur un thread séparé.

Deux questions:

  1. Comment puis-je mieux recevoir plusieurs paquets UDP? Mon code actuel pour recevoir un paquet

    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. Est-il possible de mettre à jour l'interface utilisateur tout en recevant plusieurs paquets UDP?

Edit: J'utilise un service lié pour obtenir les informations du serveur (AIDL pour être précis). Voici la configuration:

Soit I: 1. obtenir un objet individuel et le renvoyer et c'est que, pour ce cas particulier du service ou 2. Je peux renvoyer une liste d'entre eux pour ce service

Mon idée est que je devrais renvoyer une liste de dire, 5-10 objets, et répétez cela pendant un moment?

-I sentir comme il n'y a pas une façon pour moi d'être mise à jour de l'interface utilisateur tout en recevant les paquets avec ce service setup--

Répondre

1

Si la réception des paquets UDP sont effectués sur un fil séparé, il Il ne devrait pas y avoir de problèmes sur votre interface graphique!

Votre code affiche uniquement les données UDP reçues. J'ai besoin de plus d'informations pour être spécifique :)

Un seul UDPSocket gère les données entrantes sur un port spécifique, ils seront tous (paquets) stockés séquentiellement dans un tampon, dédié à ce processus spécifique. Pourriez-vous expliquer comment les stocker dans un tampon?

+0

Cela signifie-t-il que c'est un arrayliste des paquets et que, comme ils sont ajoutés à la liste, je les retire de la liste et les traite? – benzabill

+0

Les tampons Java sont généralement implémentés en tant que files d'attente. First-in is First-out –

+0

J'ai modifié le post pour avoir des informations supplémentaires – benzabill

Questions connexes