我是 android 开发的新手,但我正在尝试制作一个 xml 解析器。我一直在使用 android.sax 库,遵循一些教程,效果很好。 让我怀疑的一件事是,我实际上并没有在单独的线程中启动解析器,我只是使用处理程序在我的解析器和我的主要 Activity 之间进行通信。 我应该在线程中解析吗?
这是我的主要 Activity 代码:
tv = (TextView)findViewById(R.id.tv);
try {
URL url = new URL("https://www.googleapis.com/shopping/search/v1/public/products?key=AAAAABBBBBCCCCDDDEEEEFFF&country=FR&restrictBy=gtin=5030999075254&alt=atom");
XMLHandler xHandler = new XMLHandler();
Feed feed = xHandler.parse(url.openStream());
if(feed.getTotalResults()==0 || feed.getItems() == null || feed.getItems().isEmpty()) {
Log.w("XMLPARSENull", "No items
}
else {
tv.setText(feed.getTotalResults()+" " + feed.getItemsPerPage() + " " + feed.getStartIndex() + " " + feed.getTitle());
Iterator<Product> it = feed.getItems().iterator();
while(it.hasNext()) {
Log.w("XMLPARSEFeed",it.next().getName());
}
}
} catch(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e("XMLPARSEException", "ERROR",e);
}
最佳答案
我认为与其说是解析,不如说是网络操作,因为任何网络请求都不应该在 UI 线程中执行。您可以生成一个新的 Thread
或一个 AsyncTask
来执行您的网络请求。以下是一些帮助链接:
关于android - 我应该启动一个线程来解析一些 xml 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474518/