Каковы преимущества/недостатки при передаче аргументов в конструктор AsyncTask?

Я использую AsyncTask и задаюсь вопросом, каковы последствия передачи аргументов конструктору вместо передачи их непосредственно при вызове execute() к методу doInBackground(...), например:

Вызов:

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

Класс:

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
}

}

Каковы преимущества/недостатки в отношении дизайна, элегантности, повторного использования и производительности?

Спасибо.

Ответ 1

Каковы преимущества/недостатки в отношении дизайна, ellegance, повторного использования и производительности?

Используйте параметры для execute(), если у вас будет произвольное количество одного и того же типа (например, несколько URL-адресов в виде строк, которые вы хотите загрузить задаче).

Используйте параметры конструктора, если у вас будет несколько параметров различных типов, поэтому вы можете воспользоваться безопасностью типа времени компиляции Java.

Если у вас будет только один объект для передачи (или none), оба подхода в значительной степени эквивалентны.