一个线程如果完成等待(Android)

时间:2016-07-07 18:57:33

标签: android multithreading wait

我想上传一些文件。我在for循环中使用以下源代码:

Thread uploadThread = new Thread() {
    @Override
    public void run() {
        uploadFile(sourcePath, destPath);
    }
};
uploadThread.start();

这很好用。在哪里以及如何检查线程何时完成?我需要在for循环中暂停一段时间,线程正在工作。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您应该使用异步任务。这是一种允许您获得进展和结束信息的线程。

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");
 }

}

来源:Android开发人员

onProgressUpdate onPostExecute 分别在进度更改和完成时调用。