我正在使用AsyncTask,并想知道将参数传递给构造函数的含义是什么,而不是直接将它们传递给doInBackground(…)方法的execute()调用,例如:
呼叫:
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
}
}
设计,优雅,重用和性能有哪些优点/缺点?
谢谢.
解决方法
What are the advantages/disadvantages regarding design,ellegance,reuse and performance??
如果您有任意数量的相同类型(例如,您希望任务下载的字符串的几个URL),请使用参数来执行().
如果您有几个不同类型的参数,请使用构造函数参数,因此您可以利用Java的编译时类型安全性.
如果你只有一个对象传入(或者没有),这两种方法几乎相当.