如何知道线程已完成

时间:2012-08-07 08:50:47

标签: android

我有一个活动,我正在运行一个线程来点击web服务。我想只在线程完成时完成活动。

3 个答案:

答案 0 :(得分:5)

为了让您的生活更轻松,请使用Android AsyncTask对象。这提供了与Thread相同的后台进程,但为您处理所有事情。这包括AsyncTask不同阶段的回调。这包括一旦它通过onPostExecute()函数完成了你在后台提出的要求。

来自文档:

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

答案 1 :(得分:3)

您可以使用Thread.join(),它适用于所有Java程序(不仅仅是Android)。

答案 2 :(得分:0)

如果您使用AsyncTask,可以调用线程的isAlive()方法或getStatus()