2014-09-16 5 views
1

Je construis une bibliothèque android. La classe principale comprend des méthodes telles que connect, getUserSession .Workflow comprend quelques étapes-Architecture de la bibliothèque personnalisée Android

Etape 1: dans la méthode getUserSession. Je dois envoyer une demande POST Http à l'API externe et recevoir les données de réponse (sessionKey, id, nom etc.). C'est comme une méthode d'authentification.

Étape 2: En méthode de connexion. Il utilise les données de réponse de l'étape 1, puis je dois me connecter au websocket le serveur reçoit les données de réponse (détails d'utilisateur, profil, etc).

Étape3: Passez les données de réponse de l'étape 2 de l'activité. Je veux être l'étape 1 et l'étape 2 pour être synchrounous parce que l'étape 2 ne fonctionnera pas sans l'étape 1. Et je ne veux pas bloquer l'application pendant le traitement. Après avoir fait des recherches j'ai trouvé ceci peut être fait en utilisant AsyncTask classe. Mais il semble que je ne peux pas retourner les valeurs des méthodes doInBackground et onPostExecute. Comment faire cette tâche?

Répondre

2

Vous devez définir auditeur (interface) pour la première AsyncTask S'il vous plaît essayer ci-dessous le code

interface AsyncTaskListener{ 
    public void onTaskCompleted(Object<Type> value); 
    } 

    public class DemoAsyncTask extends AsyncTask<String,Void,Void>{ 
    AsyncTaskListener listener; 
    public DemoAsyncTask(AsyncTaskListener listener){ 
     this.listener = listener; 
    } 
    @Override 
    protected String doInBackground(Void... params) { 
    ///do some task 
    return someResult; 
    } 
    @Override 
    protected void onPostExecute(String result) { 
    listener.onTaskCompleted(result); 
    } 

// Appel tâche Async d'activité ou d'un fragment

DemoAsyncTask task = new DemoAsyncTask(new AsyncTaskListener(){ 
@Override 
public void on onTaskCompleted(Object<Type> value);{ 
//do your second step here 
}) 
}; 
task .execute(); 
+0

Merci, simple et propre. très appréciée ! – NeiL

+0

Salut, pouvez-vous donner une bonne source pour en apprendre davantage sur cette technique? – NeiL

+0

http://android-dwivediji.blogspot.in/2014/01/best-way-to-use-asynctask-class.html cochez cette case – Sunny

Questions connexes