我尝试使用Json.connect加载数据:
Document doc = Jsoup.connect("http://google.com").timeout(2000).ignoreContentType(true).get();
它冻结了我的asynctask线程很长一段时间(似乎它不会停止)。我还试图删除“timeout(2000)”,使用另一个URL,删除“ignoreContentType(true)”,但问题反复出现。我用android studio 2.0;在我的build.gradle中,我使用compile 'org.jsoup:jsoup:1.8.3'
。我还用try { ... } catch (Throwable t) {}
包围了这个块,但它永远不会阻塞。这有什么不对?
此代码仅用于测试此类,从不访问Log.d
和e.printStackTrace()
。 Android监视器显示永久手机的CPU加载。
class WebLoader extends AsyncTask<String, Void, String> {
private WhatToLoad whatToLoad;
public WebLoader(WhatToLoad whatToLoad) {
this.whatToLoad = whatToLoad;
}
@Override
protected String doInBackground(String... params) {
return downloadUrl(params[0]);
}
protected void onPostExecute(InputStream stream) {
onWebResult(whatToLoad, stream);
}
}
private static String downloadUrl(String myurl) {
try {
Document doc = Jsoup.connect("http://google.com").timeout(2000).ignoreContentType(true).get();
Log.d("jsoup1", doc.toString());
return doc.toString();
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
编辑:当我从官方网站运行示例时会发生同样的问题:
Document doc = Jsoup.parse("<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>");
Element body = doc.body();
logcat:
04-09 17:56:53.810 32615-32629/com.abc.def W/art: Suspending all threads took: 6.560ms
04-09 17:57:32.890 32615-32629/com.abc.def W/art: Suspending all threads took: 5.075ms
04-09 17:58:23.520 32615-32629/com.abc.def W/art: Suspending all threads took: 6.361ms
04-09 17:58:28.530 32615-32629/com.abc.def W/art: Suspending all threads took: 5.165ms
04-09 17:58:30.040 32615-32629/com.abc.def W/art: Suspending all threads took: 5.637ms
04-09 17:58:30.540 32615-32629/com.abc.def W/art: Suspending all threads took: 5.995ms
04-09 17:59:46.210 32615-32629/com.abc.def W/art: Suspending all threads took: 5.289ms
答案 0 :(得分:0)
我终于解决了它。在
上设置断点时,android studio中似乎存在问题Jsoup.parse
或
Jsoup.connect
方法。当我在theese方法之后设置断点时,它们运行得非常快,但是如果我在其中一个方法上设置断点,调试器在它之前停止并且在按下恢复之后没有任何反应。