我正在尝试使用 JSOUP HTML 解析库来获取 HTML 文档,使用
Document doc = Jsoup.parse(u, 1000);
我收到错误 "android.os.NetworkOnMainThreadException"
我明白这是因为我需要在主线程以外的地方进行下载,但我不知道如何解决这个问题。
如果我使用线程,我需要能够返回 doc
以便我可以在下载完成时进行解析。
你能帮我解决这个问题吗?
我使用的类如下:
public class DataSorter{
private Document doc;
DataSorter(){
downloadData();
}
private void downloadData() throws IOException{
String url = "www.google.com";
URL u = new URL(url);
System.out.println("Downloading....");
doc = Jsoup.parse(u, 5000); //Time out 5000ms
System.out.println("Download Successful");
}
Document getDoc(){
return doc;
}
}
最佳答案
您正在主 ui 线程上执行与网络相关的操作。使用 Thread
或 AsyncTask
http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
AsyncTask 文档
http://developer.android.com/reference/android/os/AsyncTask.html
类似的帖子@
How to fix android.os.NetworkOnMainThreadException?
您可以使用 Thread
但请记住,您可以在 ui 线程而不是后台线程上更新 ui。
您可以使用 AsyncTask 使用 onPreExecute
和 onPostExecute
来更新 ui。使用 doInbackground
进行网络相关操作。
移动这个
Document doc = Jsoup.parse(u, 1000);
在 AsyncTask 的 Thread
或 doInbackground
中。
关于android - Android 中的 NetworkOnMainThreadException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154019/