Как я могу начать разбор залпа в другом потоке

#java #android #multithreading #android-volley

Вопрос:

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

  private void runParse() {
        WordSearcher word = new WordSearcher(mQueue);

        Thread th = new Thread(() -> {
            word.jsonParse();
        });

        th.start();

        try {
            th.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        text.setText(word.getText());
        translation.setText(word.getTranslation());

    }
 

Этот метод работает во втором потоке:

 public void jsonParse() {
    String url = "https://dictionary.skyeng.ru/api/public/v1/words/search?search=find ";
    JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null, listener,
            new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
            Log.d("MyLog", "onErrorResponse");
        }

    });

    requestQueue.add(request);
}
 

Прослушиватель, в котором я получаю данные. Он работает в основном потоке, хотя и не должен:

 Response.Listener<JSONArray> listener = (response) -> {
        try {
            JSONObject object = response.getJSONObject(0);
            JSONArray meaningsArray = object.getJSONArray("meanings");
            JSONObject meaningObject = meaningsArray.getJSONObject(0);


            text = object.getString("text");
            translation = meaningObject.getJSONObject("translation").getString("text");
            image = meaningObject.getString("imageUrl");
            sound = meaningObject.getString("soundUrl");

        } catch (JSONException e) {
            e.printStackTrace();
            Log.d("MyLog", "Parse time Error");
        }
    };