Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:Jsoup无法在AsyncTask中解析_Java_Android_Garbage Collection_Jsoup - Fatal编程技术网

Java Android:Jsoup无法在AsyncTask中解析

Java Android:Jsoup无法在AsyncTask中解析,java,android,garbage-collection,jsoup,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<&

我有一个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);
    }
}
未能完成。它只是在控制台中吐出以下内容:

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

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

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

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

但是,如果我按下主页按钮;它很高兴在几秒钟内完成解析

如果我把这两个setProgressBar都注释掉。。。方法它可以毫无问题地解析它


编辑:它最终会完成解析。。。但是它需要接近10000ms,而通常情况下,它将在最大5000ms内完成,此外,跳转到onPostExecute()大约需要7000ms;块,通常在100ms以下运行。

如果问题出在
setProgressBarindeTerminateVibility
上,请也发布其代码。
setProgressBarindeTerminateVibility
是Android核心的一部分。啊,我的错。AsyncTask运行时进度条是否至少可见?是的,其他一切都正常(UI上没有延迟,文本框接受输入等)。它只是在解析时卡住了。也许您应该在活动的上下文而不是AsyncTask的上下文中显示进度条<代码>activityContext.setProgressBarInDeterminateVibility()
Document doc = Jsoup.parse(params[0]);