我正在使用AsyncTask
并想知道将参数传递给构造函数的含义是什么,而不是直接在execute()
调用doInBackground(...)
方法上传递它们,例如:< / p>
呼叫:
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
}
}
有关设计,优雅,重复使用和性能的优点/缺点是什么?
谢谢。
答案 0 :(得分:15)
关于设计,优雅,重用和性能的优点/缺点是什么?
如果您将拥有相同类型的任意数字(例如,您希望任务下载的多个URL作为字符串),请将参数用于execute()
。
如果您有多个不同类型的参数,请使用构造函数参数,这样您就可以利用Java的编译时类型安全性。
如果您只有一个对象可以传入(或者没有),则两种方法都非常相同。