发布进度
有时,我们需要更新 AsyncTask
完成的计算进度。这个进展可以用字符串,整数等来表示。为此,我们必须使用两个函数。首先,我们需要设置 onProgressUpdate
函数,其参数类型与 AsyncTask
的第二个类型参数相同。
class YourAsyncTask extends AsyncTask<URL, Integer, Long> {
@Override
protected void onProgressUpdate(Integer... args) {
setProgressPercent(args[0])
}
}
其次,我们必须在 doInBackground
函数上使用函数 publishProgress
,这就是全部,以前的方法将完成所有工作。
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));
}
return totalSize;
}