2011-09-21 16 views
10

Sto usando AsyncTask e chiedendosi quali sono le implicazioni di passare gli argomenti al costruttore invece di trasmetterli direttamente sulla chiamata execute() al metodo doInBackground(...), ad esempio:Quali sono i vantaggi/svantaggi nel passare argomenti al costruttore AsyncTask?

chiamata:

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

Classe :

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 
} 

}

Cosa sono i vantaggi/gli svantaggi di design, eleganza, riuso e prestazioni?

Grazie.

+0

La semplice regola empirica è: "Più il numero di argomenti è il più riutilizzabile del codice" – ingsaurabh

risposta

15

Quali sono i vantaggi/svantaggi in termini di design, elleganza, riutilizzo e prestazioni ??

parametri d'uso execute() se si vuole avere un numero arbitrario dello stesso tipo (ad esempio, diversi URL come stringhe che si desidera che il compito di scaricare).

Utilizzare i parametri del costruttore se si dispone di diversi parametri di tipi distinti, in modo da poter sfruttare la sicurezza del tipo in fase di compilazione di Java.

Se si ha solo un oggetto da passare (o nessuno), entrambi gli approcci sono praticamente equivalenti.

+0

Grazie per l'esperienza saggia – MobileCushion

Problemi correlati