2011-04-25 8 views
0

Je suis confronté au problème d'avoir une tâche asynchrone, mais j'en ai besoin deux fois, parce que chaque fois que je change une partie différente de l'interface graphique (mise à jour de la barre de progression).Tâche asynchrone Android - quelle activité l'a évoquée?

Existe-t-il un moyen de déterminer dans la clause if-else, quelle activité appelle-t-il et ensuite de faire une fonction appropriée pour chacun d'eux?

Edit: hein, la réponse est ici et maintenant il n'y a pas ...

Merci

Répondre

2

Vous pouvez tenir une variable membre qui contient l'activité/contexte, il est démarré.

//pseudocode 
AsyncTask task = new AsyncTask(); 
task.mActivity = this; 
task.execute(); 

intérieur doInBackground il suffit de vérifier l'activité:

//pseudocode 
if (mActivity instanceof MyActivity) { 
    // .... 
} else { 
    // .... 
} 
0

Extrait du code de la mise en œuvre AsyncTask et délégué qui à l'activité. Exemple:

public interface MyDelegate { 
    public void updateProgress(....) 
} 

Votre AsyncTask prend un délégué et il appelle quand correspond le:

public class MyAsyncTask .... { 
    public MyAsyncTask(MyDelegate myDelegate) { ... } 

    // somewhere in your code (probably onProgressUpdate) 
    myDelegate.updateProgress(...) 
} 

Votre activité/s mettre en œuvre/s le délégué:

public class MyActivity extends Activity implements MyDelegate { 
    public void updateProgress(...) { 
     // update ui 
    } 

    // somewhere in your code: 
    new MyAsyncTask(this).execute(...); 
} 
Questions connexes