Ответ 1
Вам не нужно запускать запрос Volly для задачи async.
Почему:
Они управляют всей связанной с сетью задачей в отдельном потоке. Если вы внимательно посмотрите на проект библиотеки, они не отображают задачу async. Но они разумно справляются со всей связанной с сетью задачей.
Проверьте класс RequestQueue.java в основном пакете Volly
здесь я вставляю java doc.
/**
* A request dispatch queue with a thread pool of dispatchers.
*
* Calling {@link #add(Request)} will enqueue the given Request for dispatch,
* resolving from either cache or network on a worker thread, and then delivering
* a parsed response on the main thread.
*/
Отредактировано:
Формирование запроса:
С Volley сетевая связь управляется RequestQueue. Лучший способ использовать RequestQueue и все его инструменты, особенно кеш, - это создать экземпляр одного экземпляра и сохранить его как одноэлементный. На этом этапе вы можете добавлять или отменить запросы, останавливать или запускать запросы и получать доступ к кешам ответов.
RequestQueue queue =Volley.newRequestQueue(this);
После создания экземпляра RequestQueue запрос должен быть сформирован. Это можно сделать, используя несколько разных классов запросов "из коробки", включенных в библиотеку Volley, или путем расширения класса запросов Volleys в ваш собственный пользовательский запрос. Классы запросов, уже включенные в Volley, представляют собой запрос String, запросы JSON и запрос изображения. Большинство классов запросов, включенных в библиотеку Volley, используют конструкторы, похожие на приведенные ниже.
Параметры, передаваемые в конструктор:
RequestMethod (get, post, delete, ect) * JSONObject * - необязательный объект, который будет отправлен с вашим запросом ResponseListener. Если ваши данные будут отправлены после завершения запроса ErrorListener. Что будет сказано, если возникла проблема с вашим запросом.
JsonObjectRequest request = JsonObjectRequest(Requestmethod, url, null, new ResponseListener(), new ErrorListener());
Прослушиватели для получения ответа:
Приемник успешного ответа
private class ResponseListener implements Response.Listener{
@Override
public void onResponse(JSONObject response){
}
}
Слушатель ответа на ошибку
private class ErrorListener implements Response.ErrorListener{
@Override
public void onErrorResponse(VolleyError error){
}
}
Наконец, добавьте свой запрос в очередь запросов, остальная часть everithing volly будет обрабатывать вас.
Выполнение вызова:
Теперь, когда мы сделали наши классы запросов и ответов, мы готовы добавить запрос в очередь и получить данные. Для этого мы просто добавляем запрос в очередь.
queue.add(request);
Затем ответ или ошибка будут переданы классам ответов/ошибок, которые мы определили в нашем запросе. Вы можете добавить столько запросов в очередь, что вы хотели бы в одно время, и ответы будут доставлены в соответствующие классы ответов/ошибок