Android Async Tsk не выполняется должным образом

Я просто хочу подождать на экране-заставке, пока мой JSON не будет обрабатываться, но этого не происходит. Метод onPostExecute () выполняется сразу после doinbackground (). Нет времени загружать весь JSON.

Вот мой код. Сначала я получаю нулевой размер списка, затем начнется загрузка JSON.

private class GetContacts extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected Void doInBackground(Void... arg0) {
        datalist = new ArrayList<>();
        Log.e("entering","Enter Inside");
        try{
            JsonArrayRequest billionaireReq =
                    new JsonArrayRequest(new ApiURLs().getAll_movies_url() 
                            new Response.Listener<JSONArray>() {
                        @Override
                        public void onResponse(JSONArray response) {
                            Log.e("response", "Response" + response);
                            //Initialize Gson obj to process jason response
                            GsonBuilder gsonBuilder = new GsonBuilder();
                            Gson gson = gsonBuilder.create();
                            // assigning data in model class, we initializing this class as a array type
                            // because the response is in array format
                            HomeModel[] getResult = gson.fromJson(response.toString(), HomeModel[].class);

                            // this loop help us in fetching all the records of model class
                            for (int i = 0; i < getResult.length; i++) {
                                Log.e("response", "Model Values" + getResult[i].toString());
                                //datalist.add(getResult[i]);
                                datalist.add(getResult[i]);
                            }

                            //GlobalData.setGlobal_movie_list(datalist);
                            Log.e("DataLoded","Record Added");
                        }

                    }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Log.e("Request","Error" + error);
                        }
                    });

            //This is a queue which is used by Volley to lineup requests
            AppController.getInstance().addToRequestQueue(billionaireReq);
        }
        catch (Exception e){
            Log.e("Error","Error"+e);
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);

        Log.e("Data","DataSize"+datalist.size());

    }
} 

Я думаю, что запросы Volley уже асинхронны, поэтому не нужен AsyncTask. Просто сделайте это простым методом и делайте свои вещи внутри onResponse (ответ JSONArray).

ADM 28.03.2018 19:29

@ADM вы только что написали ответ как комментарий

Pavneet_Singh 28.03.2018 19:30

Да .. Только если OP понял. Что он / она здесь делает не так.

ADM 28.03.2018 19:45

Он будет работать так большую часть времени. В postExecute вы имеете в виду результат другой асинхронной операции, которая может не быть завершена в то время. Здесь вам нужно изменить свою стратегию.

M. Prokhorov 28.03.2018 19:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
34
0

Другие вопросы по теме