Каковы преимущества / недостатки передачи аргументов конструктору AsyncTask? - PullRequest
10 голосов
/ 21 сентября 2011

Я использую 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 Ответ

15 голосов
/ 21 сентября 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...