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 つだけ残ります。
  2. コンストラクターには、IDE での名前の提案があります。URLを配置する必要があると考えてください。new Task(String url)execute(String... params)
  3. 再利用にあいまいさはありません。多くの新しいアンドロイドは次のように書いています:

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

    しかし、これは間違っています。 AsyncTask Javadoc

    タスクは 1 回だけ実行できます (2 回目の実行を試みると、例外がスローされます)。

  4. コンパイル時にエラーを検出します。

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

    パラメータnew Task().exec();が欠落している場合、実行時に NPE が発生します。

パラメータの使用は避けるべきだと思います。

于 2013-08-31T04:57:55.967 に答える