如何解决android.os.networkonmainthreadexception

时间:2016-12-30 20:53:13

标签: android jsoup

我想在地址中获取链接,并使用JsoupRecyclerView,所以我这样做:

public static List<News> newsList(String url) {
    List<News> newsArrayList = new ArrayList<>();
    try {
        Document document = Jsoup.connect().get();
        Elements newsElements = document.select(".boxMiddle .grpLinks a");
        int i = 1;
        for (Element newsElement : newsElements) {
            News news = new News();
            news.setId(i);
            news.setTitle(newsElement.text());
            news.setDate(newsElement.attr("title"));
            news.setUrl(Uri.parse("www.google.com"));
            newsArrayList.add(news);
            i++;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return newsArrayList;

}  

但是,我收到此错误:android.os.NetworkOnMainThreadException

如何解决此错误?

2 个答案:

答案 0 :(得分:0)

请使用AsyncTask。您无法在UIThread上进行网络呼叫。

https://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:0)

为您的I / O使用AsyncTask。您无法在主线程上执行网络连接。

new AsyncTask<Void, Void, Void>(){

  public void doInBackground(Void... params){
    //I/O here
  }
}.execute();