AsyncTask 有一个非常古玩的方法task.execute(Params... params)
例如,下载一个 url:
new DownloadTask(context).execute(url);
new DownloadTask(context, url).execute();
我们应该如何选择,Param 还是构造函数?
AsyncTask 有一个非常古玩的方法task.execute(Params... params)
例如,下载一个 url:
new DownloadTask(context).execute(url);
new DownloadTask(context, url).execute();
我们应该如何选择,Param 还是构造函数?
作为提问者,我认为构造函数更好。
原因:
new Task(String url)
对比execute(String... params)
重复使用没有歧义。许多较新的android会写:
DownloadTask task = new DownloadTask();
task.execute(url);
task.execute(url2);
但这是错误的。 异步任务 Javadoc
该任务只能执行一次(如果尝试第二次执行将引发异常。)
在编译时检测错误。
@Override
protected String doInBackground(String... params) {
String url = params[0];
return download(url);
}
缺少参数的人new Task().exec();
将在运行时获得 NPE。
我认为我们应该避免使用参数。