4

我有一个活动,我正在运行一个线程来访问 Web 服务。我只想在线程完成后完成活动。

4

3 回答 3

7

为了让您的生活更轻松,请使用 Android AsyncTask对象。这提供了与线程相同的后台进程,但会为您处理一切。这包括 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");
 }
}
于 2012-08-07T09:06:12.413 回答
4

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

于 2012-08-07T08:53:49.207 回答
0

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

于 2012-08-07T08:58:14.063 回答