2014-06-05 4 views
-1

Je suis nouveau à Android, j'ai construit une application où de nombreux services Web sont utilisés. J'utilise la méthode doInBackground() de la tâche asynchrone pour appeler les services Web.Tâche asynchrone dans android

ma classe asyntask est publique et elle est écrite dans un fichier séparé. Je n'utilise pas onPostExecute pour effectuer des opérations postwebservice, à la place je crée une chaîne et je reviens. puis dans ma classe d'activité j'examine la chaîne et j'emballe les données en utilisant un haricot java.

étant donné que la tâche asynchrone s'exécute de manière asynchrone, est-il correct de s'appuyer sur ce que renvoie la méthode doInBackground. ou est-il nécessaire d'effectuer mes opérations post-service Web dans onPostExecute uniquement.

veuillez me guider avec la bonne façon de faire les choses pour mon projet. Merci.

+0

Vous devez utiliser onPostExecute. –

+0

et exécutez! N'appelez jamais doInBackground directement .... – ElDuderino

+0

iam using execute Je n'appelle pas doInBackground directement, après avoir appelé execute j'obtiens la réponse dans l'activité – user3136798

Répondre

0

Vous devez effectuer tout le travail post-service Web dans onPostExecute, car cette méthode est exécutée dans le thread principal (UI) et vous pouvez donc mettre à jour votre interface utilisateur.

Jetez un oeil à http://developer.android.com/reference/android/os/AsyncTask.html

Un exemple de base (Tiré de la documentation)

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
protected Long doInBackground(URL... urls) { 
    // Here you call your webservice and return the result 
    return totalSize; 
} 

protected void onPostExecute(Long result) { 
    // The result from doinbackground is passed as an argument 
    // here, so you update your UI from this method. 
} 
} 

Comme kaushik Vous pouvez également réutiliser le Asyntask avec un rappel défini, cochez cette question:

0

Créez une Interface et une méthode de rappel pour accéder à la classe AsyncTask.

  1. accès Activity ou Context ur AsyncTask utilisant Constructor de ce AsyncTask
  2. Dans onPostExecute transmettre le résultat à ur Activity en utilisant la méthode de rappel

didacticiels

1. http://samir-mangroliya.blogspot.in/p/android-seperate-asynctask-class.html 2. http://www.androidsnippets.com/asyntask-in-android

3. http://www.brighthub.com/mobile/google-android/articles/82805.aspx

Questions connexes