This exception is thrown when an application attempts to perform a networking operation on its main thread.
(当应用程序尝试在其主线程上执行联网操作时,将引发此异常。)
Run your code in AsyncTask
: (在AsyncTask
运行代码:)
class RetrieveFeedTask extends AsyncTask<String, Void, RSSFeed> {
private Exception exception;
protected RSSFeed doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
RssHandler theRSSHandler = new RssHandler();
xmlreader.setContentHandler(theRSSHandler);
InputSource is = new InputSource(url.openStream());
xmlreader.parse(is);
return theRSSHandler.getFeed();
} catch (Exception e) {
this.exception = e;
return null;
} finally {
is.close();
}
}
protected void onPostExecute(RSSFeed feed) {
// TODO: check this.exception
// TODO: do something with the feed
}
}
How to execute the task:
(如何执行任务:)
In MainActivity.java
file you can add this line within your oncreate()
method
(在MainActivity.java
文件中,您可以在oncreate()
方法中添加此行)
new RetrieveFeedTask().execute(urlToRssFeed);
Don't forget to add this to AndroidManifest.xml
file:
(不要忘记将其添加到AndroidManifest.xml
文件中:)
<uses-permission android:name="android.permission.INTERNET"/>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…