Android:Jsoup无法解析AsyncTask

时间:2014-08-18 13:52:23

标签: java android garbage-collection jsoup

我有一个AsyncTask设置如下:

private class ParseHTMLOperation extends AsyncTask<String, Void, List<Shout>> {

    @Override
    protected List<Shout> doInBackground(String... params) {
        List<Shout> shouts = new LinkedList<>();

        Document doc = Jsoup.parse(params[0]);
        Elements messages = doc.select("li");

        for (int i = messages.size() - 1; i >= 0; i--) {
            Element tempElement = messages.get(i);

            String username = tempElement.select(".username").text();
            String message = tempElement.select(".message").text();

            shouts.add(new Shout(R.drawable.ic_launcher, username, message);
        }

        return shouts;
    }

    @Override
    protected void onPostExecute(List<Shout> result) {
        adapter.clear();
        adapter.data = result.toArray(new Shout[result.size()]);
        adapter.addAll(result);
        adapter.notifyDataSetChanged();
        setProgressBarIndeterminateVisibility(false);
    }

    @Override
    protected void onPreExecute() {
        setProgressBarIndeterminateVisibility(true);
    }
}

这里的问题是:如果UI中有任何内容,(我到目前为止已经使用Progressbar,模式弹出窗口和此ProgressBarIndeterminate进行了测试)此行

Document doc = Jsoup.parse(params[0]);

无法完成。它只是在控制台中吐出这个:

  

我/艺术:背景粘性并发标记扫描GC释放1673(100KB)AllocSpace对象,0(0B)LOS对象,965%免费,2MB / 4MB,暂停8.964ms总计96.186ms

     

我/艺术:背景部分并发标记扫描GC释放2716(200KB)AllocSpace对象,9(754KB)LOS对象,1081%免费,2MB / 4MB,暂停14.142ms总计210.242ms

     

我/艺术:背景部分并发标记扫描GC释放2219(112KB)AllocSpace对象,3(88KB)LOS对象,733%免费,2MB / 6MB,暂停14.403ms总计167.266ms

     

我/艺术:背景粘性并发标记扫描GC释放2194(131KB)AllocSpace对象,0(0B)LOS对象,700%免费,3MB / 6MB,暂停9.194ms总计149.442ms

但是,如果我按下主页按钮;它很快就会在几秒钟内完成解析。

如果我注释掉这两个setProgressBar ...方法,它会毫无问题地解析它。

编辑:它最终完成了解析...但它需要接近100000毫秒,通常它将在最大5000毫秒内完成,此外它需要大约7000毫秒才能跳转到onPostExecute();阻止,通常它在100ms以下的路上。

0 个答案:

没有答案