медленный синтаксический анализ json при извлечении данных

#java #android #json #android-volley #wordpress-rest-api

#java #Android #json #android-volley #wordpress-rest-api

Вопрос:

Я использую WordPress rest API для извлечения данных, и я извлекаю только 10 сообщений одновременно, используя volley.

Ссылка на API

Когда я запрашиваю API в браузере, он выдает мне результат менее чем за 6-7 секунд…

Но моему приложению требуется более 15 секунд, чтобы отобразить эти 10 сообщений.

Иногда для отображения данных требуется более 1 минуты.

Я даже добавил параметр, позволяющий получать только 2 сообщения на страницу. Но время отклика такое же.

Я ищу и изменяю код в течение 2 дней, но не могу от него избавиться.

Вот код:-

  private void jsonrequest(int pageNo) {
    JSON_URL = "https://jamuitoday.com/wp-json/wp/v2/posts?_embedamp;page="   pageNo;
    JsonArrayRequest request = new JsonArrayRequest(JSON_URL, response -> {

        JSONObject jsonObject;
        for (int i = 0; i < response.length(); i  ) {
            try {

                isLoading = true;
                isNewsLoaded = false;
                jsonObject = response.getJSONObject(i);
                News news = new News();

                //Get News Link
                String link = jsonObject.getString("link");
                news.setLink(link);

                //Set Date
                String date = jsonObject.getString("date");
                String d = date.substring(0, 10);
                int time = Integer.parseInt(date.substring(11, 13));
                if (time > 12) {
                    String ti = date.substring(13, 16);
                    String dt = d   "     "   (time - 12)   ti   " PM";
                    news.setdate(dt);
                } else {
                    String ti = date.substring(11, 16);
                    String dt = d   "     "   ti   " AM";
                    news.setdate(dt);
                }

                //Set Title
                JSONObject title = jsonObject.getJSONObject("title");
                String titleren = title.getString("rendered");
                news.setName(titleren);

                //Set Description
                SpannableString content = new SpannableString("Content");
                content.setSpan(new UnderlineSpan(), 0, content.length(), 0);
                JSONObject desc = jsonObject.getJSONObject("content");
                String descSub = desc.getString("rendered");
                news.setDescription(String.valueOf(Html.fromHtml((descSub))));
                news.setAdImgUrl(descSub);


                // Set Image
                JSONObject img = new JSONObject(jsonObject.getString("_embedded"));
                JSONArray ttt = img.getJSONArray("wp:featuredmedia");
                String s = "";
                for (int t = 0; t < ttt.length(); t  ) {
                    JSONObject obj = ttt.getJSONObject(t);
                    s = obj.getString("source_url");
                }
                news.setImage_url(s);

                listNews.add(news);
                

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

        setuprecyclerview(listNews);
        isLoading = false;
        isNewsLoaded = true;
        
        pageNumber  = 1;
        

        if (recyclerView.getLayoutManager() != null) {
            recyclerView.getLayoutManager().scrollToPosition(currentListPosition);
        }

        if (shimmerFrameLayout.isShimmerVisible()) {
            shimmerFrameLayout.stopShimmer();
            shimmerFrameLayout.setVisibility(View.GONE);
        }
        if (swipyRefreshLayout.isRefreshing()) {
            swipyRefreshLayout.setRefreshing(false);
        }

       

    }, error -> {

    });


    RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
    requestQueue.add(request);


}
  

Есть какой-нибудь хак, который может ускорить это?

Я реализую SQLite для хранения данных и отображения при запуске приложения. Таким образом, пользователь не может почувствовать время загрузки.

Комментарии:

1. Я бы попросил вас обратить внимание на две вещи 1. Библиотека подкачки Android как мы видим, вы используете какую-то страницу. 2. Я буду рекомендовать использовать одноэлементный шаблон для volley

2. @SayokMajumder спасибо. Я попробовал шаблон singleton, и это действительно улучшает скорость. Но не понял, что это делает и как работает? и поиск руководств по библиотеке подкачки. Спасибо, приятель.

3. @SayokMajumder есть ли какой-либо способ заставить мое приложение использовать большую скорость Интернета вместо совместного использования с фоновой системой и приложениями.

4. Еще одна вещь, о которой я забыл упомянуть, — это проверить, загружается ли какое-либо изображение в том же потоке или нет. И просто для целей тестирования преобразуйте JsonArrayRequest в StringRequest и запишите строку ответа и проверьте, увеличивается ли скорость.

5. Karan проверьте профилировщик Android, чтобы узнать, сколько Интернета используется вашим приложением. Я не думаю, что есть какой-либо способ увеличить объем Интернета, выделенный приложению.