2011-09-21 16 views
10

estoy usando AsyncTask y preguntándose cuáles son las implicaciones de pasar los argumentos al constructor en lugar de pasarlos directamente en la llamada execute() al método doInBackground(...), por ejemplo:¿Cuáles son las ventajas/desventajas al pasar argumentos al constructor AsyncTask?

Llamar:

new SomeTask(bitmap, integer, "somestring").execute(); 

Clase :

public class SomeTask extends AsyncTask<Void, Void, String> { 
private String string; 
private Bitmap image; 
private int integer; 

public SomeTask (Bitmap bmp, int someint, String s){ 
    this.image = bmp; 
    this.string = s; 
    this.integer = someint; 
} 

protected String doInBackground(Void... params) {  
    // whatever 
    return "string"; 
} 

@Override 
protected void onPostExecute(String result){ 
    // whatever 
} 

}

Lo Cuáles son las ventajas/desventajas con respecto al diseño, la elegancia, la reutilización y el rendimiento?

Gracias.

+0

La regla de oro simple es: "Cuanto más el número de args, más código es reutilizable" – ingsaurabh

Respuesta

15

¿Cuáles son las ventajas/desventajas con respecto al diseño, ellegance, la reutilización y el rendimiento?

utilizar parámetros para execute() si van a tener un número arbitrario del mismo tipo (por ejemplo, varias direcciones URL como cadenas que desea que la tarea para descargar).

Use los parámetros del constructor si va a tener varios parámetros de distintos tipos, para que pueda aprovechar la seguridad del tipo de tiempo de compilación de Java.

Si solo va a pasar un objeto (o ninguno), ambos enfoques son prácticamente equivalentes.

+0

Gracias por su sabia intervención – MobileCushion

Cuestiones relacionadas