0

AsyncTask 有一个非常古玩的方法task.execute(Params... params)

例如,下载一个 url:

  1. new DownloadTask(context).execute(url);
  2. new DownloadTask(context, url).execute();

我们应该如何选择,Param 还是构造函数?

4

1 回答 1

0

作为提问者,我认为构造函数更好。

原因

  1. 删除泛型 PARAM,只剩下两个泛型。
  2. 构造函数在 IDE 中有名称建议。考虑你应该放置一个网址。new Task(String url)对比execute(String... params)
  3. 重复使用没有歧义。许多较新的android会写:

    DownloadTask task = new DownloadTask();
    task.execute(url);
    task.execute(url2);
    

    但这是错误的。 异步任务 Javadoc

    该任务只能执行一次(如果尝试第二次执行将引发异常。)

  4. 在编译时检测错误。

    @Override
    protected String doInBackground(String... params) {
        String url = params[0];
        return download(url);
    }
    

    缺少参数的人new Task().exec();将在运行时获得 NPE。

我认为我们应该避免使用参数。

于 2013-08-31T04:57:55.967 回答