2010-10-13 9 views
18

Desidero implementare una classe generica di salvataggio del thread che utilizza RessourceId di ImageView e l'URL (http) in cui è archiviato il file di immagine desiderato. Scaricherà l'immagine e riempie lo src di ImageView in UiThread.Posso passare diversi tipi di parametri ad un AsyncTask in Android?

Pensavo che AsyncTask sarebbe la cosa migliore per me. Tuttavia ho notato che posso passare solo un tipo di parametro al metodo doInBackground(). Come una matrice di URL. È vero? Cosa mi suggeriresti?

risposta

21

È possibile aggiungere metodi di settaggio all'implementazione AsyncTask o persino definire il proprio costruttore per passare parametri aggiuntivi.

Se lo si desidera, se l'implementazione di AsyncTask è una classe interna di un'attività, è possibile accedere a tutte le variabili di istanza dell'attività. Preferisco l'opzione di cui sopra, in quanto indica chiaramente quali dati richiede l'attività.

43

È possibile passare params come oggetti

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

Sì, ma allora non sarete al sicuro tipo. –

Problemi correlati