我有一个活动,我正在运行一个线程来访问 Web 服务。我只想在线程完成后完成活动。
问问题
10727 次
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 回答