将parameter passing给AsyncTask构造函数有什么优点/缺点?

我正在使用AsyncTask并想知道将parameter passing给构造函数而不是直接将它们传递给doInBackground(...)方法的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 } 

}

什么是devise,优雅,重用和性能的优势/劣势?

谢谢。

Solutions Collecting From Web of "将parameter passing给AsyncTask构造函数有什么优点/缺点?"

什么是devise,优雅,重用和性能的优势/劣势?

如果您将有任意数量的相同types(例如,您希望任务下载的多个string作为string),请使用参数execute() )。

如果您将具有不同types的几个参数,请使用构造函数参数,这样您就可以利用Java的编译时types安全性。

如果你只有一个对象传入(或不传入),那么这两种方法几乎是等价的。