Каковы преимущества/недостатки при передаче аргументов в конструктор 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), оба подхода в значительной степени эквивалентны.