Java Android:Jsoup无法在AsyncTask中解析
我有一个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<&
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]);