4

Webサービスにアクセスするためにスレッドを実行しているアクティビティがあります。スレッドが終了したときにのみアクティビティを終了したいと思います。

4

3 に答える 3

7

あなたの生活を楽にするために、AndroidAsyncTaskオブジェクトを使用してください。これはスレッドと同じバックグラウンドプロセスを提供しますが、すべてを処理します。これには、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()を使用できます。これは、AndroidだけでなくすべてのJavaプログラムで機能します。

于 2012-08-07T08:53:49.207 に答える
0

isAlive()スレッドのメソッドを呼び出すかgetStatus()、AsyncTaskを使用する場合は呼び出すことができます

于 2012-08-07T08:58:14.063 に答える