寻找在android中使用带有AsyncTask的get()的好例子

时间:2011-08-15 20:01:19

标签: android android-asynctask

我对AsyncTask中的get(long, java.util.concurrent.TimeUnit)函数感到好奇,但是我很难找到它的用法示例。

get(long, java.util.concurrent.TimeUnit)

任何人都可以提供一个使用它的例子吗?

2 个答案:

答案 0 :(得分:15)

似乎AsyncTask.get()阻止了调用者线程,AsyncTask.execute()没有。

您可能希望将AsyncTask.get()用于要测试特定Web Service调用的测试用例,但不需要它是异步的,并且您希望控制完成所需的时间。或者,您希望在测试套件中测试您的Web服务。

语法与execute:

相同
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);

答案 1 :(得分:4)

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