我试图了解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");
}
}
答案 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);
依旧......