2011-12-04 3 views
0

J'ai une application Android qui comprend un Socket dans un Asynctask et cela fonctionne, mais je ne sais pas si c'est la bonne façon de l'implémenter.Sockets dans android et listview

Une autre chose, mon onProgressUpdate met à jour mon adaptateur de liste et provoque un décalage lorsque je joue une animation avec lui.

Quelqu'un a une bonne solution pour ça? Etes-vous sûr que vous n'êtes pas en cours de calcul sur le thread d'interface utilisateur?

Répondre

1

Découvrez ce page, il y a quelques lignes directrices sur la façon d'utiliser les différents mécanismes de fil dans Android. Si cela ne résout pas votre problème, essayez de poster la partie de votre code qui gère la population de la liste.

0

Je l'ai fait comme ça ... (juste pour la connexion Socket)

private class EstablishConnectionTask extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected Void doInBackground(Void... params) { 

     boolean ok = false; 
     dataSend = false; 

     //establish the Connection to the server and returns if it succeed or not 
     ok = client.createClient(server, port); 
     //try to send the data and return if it succeed or not 
     if(ok) dataSend = client.sendData(profilename); 
     if(dataSend) { 
      //close the connection 
      client.closeConnection(); 
     } 
     return null; 
    } 

    protected void onPreExecute() { 
     //bring a process Dialog to the front 
     showDialog(DIALOG_CONNECTING); 
    } 

    protected void onPostExecute(Void result) { 
     removeDialog(DIALOG_CONNECTING); 
     if(dataSend) { 
      Toast.makeText(Activity_sendXML.this, "xml versendet", 2000).show(); 
     } 
     else{ 
      showDialog(DIALOG_CONNECTION_REFUSED); 
     } 
    } 

} 
+0

Salut, merci pour votre réponse est en fait ce que ma solution aussi, mais je me demande si je suppose que de le mettre sous service ou à mon activité. Je rencontre des retards lorsque je joue de l'animation pendant la mise à jour de l'adaptateur listview de la tâche asynchrone. –