我们应该避免使用AsyncTask的Params

时间:2013-08-31 04:57:56

标签: java android android-asynctask

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

例如,下载网址:

  1. new DownloadTask(context).execute(url);
  2. new DownloadTask(context, url).execute();
  3. 我们应该如何选择Para​​m或构造函数?

1 个答案:

答案 0 :(得分:0)

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

原因

  1. 删除泛型PARAM,只剩下两个通用。
  2. 构造函数在IDE中有名称建议。 考虑你应该放一个网址。 new Task(String url) vs execute(String... params)
  3. 重用没有含糊之处。很多新的android都会写:

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

    但这是错误的。 AsyncTask Javadoc

      

    该任务只能执行一次(如果尝试第二次执行则会抛出异常。)

  4. 在编译时检测错误。

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

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

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