Android JSOUP发出异步请求

时间:2020-03-23 12:17:32

标签: android

实际上,重构古老代码的问题出现了,所以我需要通过JSOUP来解析页面。实际上,替换旧的AsyncTAsk更好,精度更高?我只是想了解一切,一切正常。而且如果用一个例子一般来说超级。谢谢。这是一个很酷的怪物:

 @SuppressLint("StaticFieldLeak")
class Parser extends AsyncTask<Void, Void, Void> {
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... params) {
        Document doc = null;
        try {
            doc = Jsoup.connect(URL)
                    .userAgent("Chrome/4.0.249.0 Safari/532.5")
                    .referrer("http://www.google.com")
                    .get();
            Elements views_row = doc.select("div.views-row");
            dashboardList.clear();
            for (Element element : views_row) {

                Elements header = element.select("header");
                String title = header.select("span").attr("content");
                String description = element.select("div.field.field-name-body.field-type-text-with-summary.field-label-hidden").text();
                String author = element
                        .select("div.field.field-name-field-novost-avtor.field-type-entityreference.field-label-hidden")
                        .select("a")
                        .text();
                String date = element
                        .select("span.date-display-single")
                        .attr("content");
                String img = element
                        .select("img.img-responsive")
                        .attr("abs:src");
                String web_link = element
                        .select("article.node")
                        .attr("abs:about");

                UniverseNews universeNews = new UniverseNews(
                        img,
                        title,
                        description,
                        author,
                        date,
                        web_link
                );
                dashboardList.add(universeNews);
            }


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

        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        if (dashboardList == null || dashboardList.isEmpty()) {
            showError();
        } else {
            recyclerView.setAdapter(adapter);
            adapter.notifyDataSetChanged();
            hideProgress();
        }
        mLastClickTime = SystemClock.elapsedRealtime();
    }
}

0 个答案:

没有答案