Android Jsoup连接冻结线程

时间:2016-04-09 13:38:41

标签: java android http jsoup

我尝试使用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.de.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

1 个答案:

答案 0 :(得分:0)

我终于解决了它。在

上设置断点时,android studio中似乎存在问题
  

Jsoup.parse

  

Jsoup.connect

方法。当我在theese方法之后设置断点时,它们运行得非常快,但是如果我在其中一个方法上设置断点,调试器在它之前停止并且在按下恢复之后没有任何反应。