釋出進度

有時,我們需要更新 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;
 }