排球& AsyncTask:响应命令

时间:2016-09-23 12:17:05

标签: android android-asynctask synchronization android-volley

上下文:网络(http请求和响应)。

我的问题有两部分 - 一部分关于volley,另一部分关于AsyncTask

我正在学习使用httpConnectionvolley来实施AsyncTask,所以请耐心等待。

我的问题是,在收到网络回复之后,回调被称为的顺序是什么? (如果是volleyAsyncTask

是否按顺序执行回调?

考虑这种情况,

我有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个对象,AB

现在AB将执行http请求(假设代码已实现)。

之后,他们将通过界面responseInterface返回响应。

所以我的问题是这个。 AB会通过responseInterface同时在UI线程中调用回调方法吗?

我应该使用synchronized来确保回调是同步的吗?或者AsyncTask确保顺序调用回调?

0 个答案:

没有答案