2010-10-13 4 views
18

Je veux implémenter une classe générique de thread thread qui prend l'RessourceId d'un ImageView et l'Url (http) où le fichier d'image désiré est stocké. Il va télécharger l'image et remplit le src de l'ImageView dans le UiThread. Je pensais AsyncTask serait la meilleure chose pour moi. Cependant j'ai remarqué que je peux seulement passer un type de paramètres à la méthode doInBackground(). Comme un tableau d'Urls. Est-ce vrai? Que me suggérez-vous?Puis-je transmettre différents types de paramètres à un AsyncTask sous Android?

Répondre

21

Vous pouvez ajouter des méthodes setter à votre implémentation AsyncTask ou même définir votre propre constructeur pour transmettre des paramètres supplémentaires. Si votre implémentation AsyncTask est une classe interne d'une activité, vous pouvez éventuellement accéder à toutes les variables d'instance de votre activité. Je préfère moi-même l'option ci-dessus, car elle indique clairement les données requises par la tâche.

43

Vous pouvez passer params comme des objets

new MyTask().execute(url, str, context); 

public class MyTask extends AsyncTask<Object, Void, Void> { 
    @Override 
    protected Void doInBackground(Object... params) { 
      Url url = (Url) params[0]; 
      String str = (String) params[1]; 
      Context ctx = (Context) params[2]; 

      return null; 
    } 
} 
+5

Oui mais il ne sera pas le type de sécurité. –