我已经使用AsyncTask
了很多 - 但我遇到了一个看似简单的问题,让我感到困惑。问题是这样的:
是不是
publishProgress(Progress... values)
应该马上回来?换句话说,这个方法是异步的吗?
一些背景:
我正在尝试确定以下代码是否
- 无论响应如何,每三秒触发一次 HTTP 请求或
- 触发一个 HTTP 请求,等待响应,然后在触发下一个请求之前休眠三秒钟。
公共类 MyAsyncTask {
@Override
protected void doInBackground(String... params) {
while (mRunning) {
// Call publishProgress
this.publishProgress(makeHttpRequest());
// Sleep for 3 seconds
synchronized (lock) {
try {
lock.wait(3 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
return null;
}
private HttpResponse makeHttpRequest() {
HttpResponse ajaxResponse = null;
Throwable throwable = null;
try {
ajaxResponse = mHttpClient.execute(mHttpGet);
} catch (ClientProtocolException e) {
// Handle exception
} catch (IOException e) {
// Handle exception
} catch (Exception e) {
// Handle exception
}
return ajaxResponse;
}
@Override
protected void onProgressUpdate(HttpResponse... values) {
// Do something with the response
}
}