Как я могу исправить мой сервис, останавливая основной поток на 3 секунды на экране интерфейса? - PullRequest
0 голосов
/ 22 февраля 2019

Я кодирую сервис для моего мобильного приложения.И это для получения данных с моего сайта новостей WordPress REST-API2.Мой сервис работает.Но при выполнении библиотеки залпов StringRequest мой основной поток (UI) останавливается на 3-5 секунд.И после это работает.Но это повторяется при каждом извлечении данных.

Вот мой код:

public class myPullData extends AsyncTask<Integer, Void, Void>{


    @Override
    protected Void doInBackground(final Integer... params) {
        RequestQueue rQueue = Volley.newRequestQueue(context);
        String url = "https://haberyaziyorum.com/wp-json/wp/v2/posts?categories="+params[0]+"&page=1";
        dataList = new ArrayList<>();
        System.out.println(url);
        StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                gson = new Gson();
                list = (List) gson.fromJson(s, List.class);
                //mapctrl = (map)list.get(0);
                //string x = (string) mapctrl.get("code");
                //if(x == null)
                //alList.addAll(list);
                postTitle = new String[list.size()];
                postImg = new String[list.size()];

                for(int i=0;i<list.size();++i){
                    mapPost = (Map<String, Object>)list.get(i);
                    mapTitle = (Map<String, Object>) mapPost.get("title");
                    mapContent = (Map<String, Object>) mapPost.get("content");
                    postTitle[i] = (String) mapTitle.get("rendered");
                    postImg[i] = (String) mapPost.get("jetpack_featured_media_url");
                    postID = ((Double)mapPost.get("id")).intValue();
                    postDate = mapPost.get("date").toString();
                    postContent = mapContent.get("rendered").toString();
                    Data d = new Data(params[0],postID,postTitle[i],postContent,postDate,postImg[i]);
                    //System.out.println(postID+"-"+postTitle[i]+postDate);
                    dataList.add(d);
                    // System.out.println(dataList.size());
                }
                aa();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                System.out.println("HATA-HATA-HATA");
                System.out.println(volleyError.toString());
                NetworkResponse response = volleyError.networkResponse;
                if (response != null){
                    System.out.println(response.statusCode);
                }
            }
        });
        request.setRetryPolicy(new RetryPolicy() {
            @Override
            public int getCurrentTimeout() {
                return 50000;
            }

            @Override
            public int getCurrentRetryCount() {
                return 50000;
            }

            @Override
            public void retry(VolleyError error) throws VolleyError {

            }
        });

        rQueue.add(request);
        return null;
    }

}

И консоль говорит:

I/Choreographer: Skipped 227 frames!  The application may be doing too much work on its main thread.

Как я могу решить эту проблему?

...