2010-10-13 12 views
18

Quiero implementar una clase genérica de salvado de hilos que toma el RessourceId de un ImageView y el Url (http) donde se almacena el archivo de imagen deseado. Descargará la imagen y rellenará el src de ImageView en UiThread.¿Puedo pasar diferentes tipos de parámetros a una AsyncTask en Android?

Pensé que AsyncTask sería lo mejor para mí. Sin embargo, noté que solo puedo pasar un tipo de parámetros al Método doInBackground(). Como una Matriz de Urls. ¿Es eso cierto? ¿Qué me recomendarías?

Respuesta

21

Puede agregar métodos setter a su implementación AsyncTask, o incluso definir su propio constructor para pasar parámetros adicionales.

Opcionalmente, si su implementación AsyncTask es una clase interna de una actividad, puede acceder a todas las variables de instancia de su actividad. Prefiero la opción anterior, ya que indica claramente qué datos requiere la tarea.

43

Puede pasar parametros como objetos

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í, pero entonces no va a ser seguro tipo. –

Cuestiones relacionadas