Возможно, вы захотите использовать AsyncTask.get() для тестовых случаев, в которых вы хотите протестировать определенный вызов веб-службы, но вам не нужно, чтобы он был асинхронным, и вы хотите контролировать, сколько времени потребуется для завершения. Или в любое время, когда вы хотите протестировать веб-службу в тестовом пакете.
Синтаксис совпадает с исполнением:
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));
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
new DownloadFilesTask().get(5000, TimeUnit.MILLISECONDS);
Ответ 2
Другое использование AsyncTask - это знать, когда обрабатывались несколько AsyncTasks:
AsyncTask1 a1 = new AsyncTask();
AsyncTask1 a2 = new AsyncTask();
a1.execute();
a2.execute();
a1.get();
a2.get();
Log.d("Example", "a1 and a2 have both finished, you can now proceed");