上下文:网络(http请求和响应)。
我的问题有两部分 - 一部分关于volley
,另一部分关于AsyncTask
。
我正在学习使用httpConnection
和volley
来实施AsyncTask
,所以请耐心等待。
我的问题是,在收到网络回复之后,回调被称为的顺序是什么? (如果是volley
和AsyncTask
)
是否按顺序执行回调?
考虑这种情况,
我有2 AsyncTask
秒。在同时获得网络响应后,将在postExecute()
中调用回调的顺序?两个回调到UI线程是否会同时发生,因为2 Asynctask
s在单独的线程中?还是会按顺序执行?
我已阅读这些SO帖子,
can-i-do-a-synchronous-request-with-volley
multiple-asynctasks-onpostexecute-order
running-multiple-asynctasks-at-the-same-time-not-possible
how-to-manage-multiple-async-tasks-efficiently-in-android
how-to-synchronize-two-async-task
感谢
修改:
请考虑AsyncTask
实施的代码,
public class AsyncTaskImplementation extends AsyncTask<String, Void, String> {
private final interface appAsyncTaskInterface;
public interface responseInterface {
void onSuccessHttpResponse(String resultJsonObject);
void onFailedHttpResponse(String failedMessage);
}
public AsyncTaskImplementation(){
//initialise
}
@Override
protected String doInBackground(String... params) {
//executeHttpRequest and return
}
@Override
protected void onPreExecute() {
//pre execute stuff like connection checking
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result != null&& !result.equals("")) {
responseInterface.onSuccessResponse(result);
} else {
responseInterface.onFailedinterface("failed");
}
}
}
对上述代码提出问题:
考虑在UI线程中创建的两个AsyncTaskImplementation
个对象,A
和B
。
现在A
和B
将执行http请求(假设代码已实现)。
之后,他们将通过界面responseInterface
返回响应。
所以我的问题是这个。 A
和B
会通过responseInterface
同时在UI线程中调用回调方法吗?
我应该使用synchronized
来确保回调是同步的吗?或者AsyncTask
确保顺序调用回调?