试图了解Androids AsynckTask类

时间:2015-07-15 22:24:10

标签: android

我试图了解AsynckTask类的Googles示例代码。 在线私有类DownloadFilesTask扩展了AsyncTask 我假设Params是类型URL,Progress是类型integer,Result是long类型。

我不明白以下几行   protected long doInBackground(URL ... urls)

Google的示例代码:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         long totalSize = 0;
         for (int i = 0; i < count; i++) {
             totalSize += Downloader.downloadFile(urls[i]);
             publishProgress((int) ((i / (float) count) * 100));
             // Escape early if cancel() is called
             if (isCancelled()) break;
         }
         return totalSize;
     }

     protected void onProgressUpdate(Integer... progress) {
         setProgressPercent(progress[0]);
     }

     protected void onPostExecute(Long result) {
         showDialog("Downloaded " + result + " bytes");
     }

}

2 个答案:

答案 0 :(得分:0)

如果您对参数(URL... urls)感到困惑,建议您看this question.基本上,这意味着零个或多个网址可以用作该方法的参数。

答案 1 :(得分:0)

  

我不明白以下行受保护的Long doInBackground(URL ... urls)

这意味着:当您执行任务时,您可以根据需要将多个网址传递给AsynckTask.execute()方法:

new DownloadFilesTask().execute();

new DownloadFilesTask().execute(url);

new DownloadFilesTask().execute(url_1, url_2);

依旧......