【发布时间】:2015-07-09 11:53:55
【问题描述】:
在尝试在主 UI 线程上进行网络连接时首次遇到此问题。
然后尝试使用 AsyncTask 避免它,但仍然得到相同的异常。
Networkign 仅在 AsyncTask.doInBackground() 方法内发生。但我仍然得到这个例外。我该如何解决?
public class AsyncRSSLoader extends AsyncTask<Void, Void, RSSData> {
private String url = "http://www.nasa.gov/rss/dyn/image_of_the_day.rss";
@Override
protected RSSData doInBackground(Void... params) {
try {
IotHandler handler = new IotHandler();
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(handler);
InputStream inputStream = new URL(url).openStream();
reader.parse(new InputSource(inputStream));
RSSData data = new RSSData();
data.setDate(handler.getDate());
data.setTitle(handler.getTitle());
data.setImage(getBitmap(handler.getImageUrl()));
return data;
} catch (Exception e) {
e.printStackTrace();
Log.e("NASA_RSS", e.getStackTrace().toString());
}
return null;
}
}
以及这个类的用法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AsyncRSSLoader loader = new AsyncRSSLoader();
RSSData data = loader.doInBackground();
resetDisplay(data.getTitle(), data.getDate(), data.getImage(), data.getDescription());
}
【问题讨论】:
标签: java android android-asynctask networkonmainthread