安卓的 AsyncTask

asynchronusally run task without explicitly creating thread.

# Usage

“`
doInBackground(Params…)
onProgressUpdate(Progress…)
onPostExecute(Result)
“`

Here is an example of subclassing:

“`
 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");
     }
 }
“`
 
Once created, a task is executed very simply:

“`
new DownloadFilesTask().execute(url1, url2, url3);
“`

template parameters can be `Void, Void, Void`

see https://developer.android.com/reference/android/os/AsyncTask.html

及时获取更新,请关注公众号“爬虫技术学习(spider-learn)”

公众号“爬虫技术学习(spider-learn)”

About 逸飞

后端工程师

发表评论

电子邮件地址不会被公开。 必填项已用*标注