2016-04-09 5 views
0

Я пытаюсь загрузить данные с Json.connect:Android Jsoup подключение замерзает нить

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) {}, но он никогда не попадает в блок catch. Что здесь не так?

Этот код я использую только для тестирования этого класса, ни Log.d, ни e.printStackTrace() не доступны. Монитор Android показывает загрузку процессора постоянного телефона.

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; 
    } 

Edit: Та же проблема происходит, когда я запускаю пример с официального сайта:

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

Пожалуйста, не могли бы вы разместить большую часть кода? – statosdotcom

+1

Вы начинаете 'AsyncTask'? Из кода и описания, которое вы опубликовали, проблема не очевидна. Вам нужно будет дать нам более подробную информацию. – Titus

+0

Как вы начинаете задание «WebLoader»? – Titus

ответ

0

я, наконец, решил. Кажется, есть проблема в андроида студии, когда вы установите точку останова на

Jsoup.parse

или

Jsoup.connect

метод. Когда я устанавливаю точку останова после этих методов, они выполняются очень быстро, но если я устанавливаю точку останова на один из этих методов, отладчик останавливается перед ним и после нажатия возобновления ничего не происходит.

Смежные вопросы