Сделать заявку Volley в другой теме

Я хотел бы сделать запрос с использованием библиотеки Volley в другой теме.

Это означает, что есть связь, которая находится в Протексе и процессе данных в UIThread. Я хочу сделать это, потому что у меня много связи, поэтому много данных для обработки, и сегодня у меня есть пользовательский интерфейс, который является блоком.

Итак, как я могу сделать, чтобы положить и запустить соединение в другом потоке, и сделать OnResponse () / OnErrorResponse () в UIThread

JsonArrayRequest getReq = new JsonArrayRequest(url,new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { Log.d("onRESPONSE Synchro -> Produit",response.toString()); PgrBarProducts.setMax(response.length()); percentDisplayProduct.setText("0/"+ PgrBarProducts.getMax()); nbMaxCallNetwork = PgrBarProducts.getMax(); try { for (int i = 0; i < response.length(); i++) { JSONObject explrObject = response.getJSONObject(i); String id = Integer.toString((Integer) explrObject.get("id")); callOneObject(id, PgrBarProducts, percentDisplayProduct , 1); // appel du product } } catch (JSONException e) { e.printStackTrace(new PrintWriter(stackTrace)); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { changeStatutToError(); VolleyLog.d("", "Error: " + error.getMessage()); percentDisplayProduct.setTextColor(Color.RED); percentDisplayProduct.setTypeface(null, Typeface.BOLD); percentDisplayProduct.setText("erreur"); waitBarProgressProduct.setVisibility(View.INVISIBLE); synchroProducts.setVisibility(View.VISIBLE); } }); getReq.setRetryPolicy(new DefaultRetryPolicy(60 * 1000, 1,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); // Adding request to request queue and start the request AppController.getInstance().addToAndStartRequestQueue(getReq); } }); 

Каждый сетевой запрос, выполняемый Volley, выполняется в фоновом потоке. Волейбол позаботится об этом за кулисами. Поэтому нет необходимости выполнять запрос в другом потоке, так как это уже происходит.

С другой стороны, слушатели вызываются в потоке пользовательского интерфейса.

В основном вы ответили на свой вопрос, когда писали, что данные обрабатываются в потоке пользовательского интерфейса. Просто переместите эту обработку данных, которая выполняется внутри ваших слушателей, в фоновый поток / AsyncTask чтобы освободить поток пользовательского интерфейса и предотвратить блокировку.