我开发了一个Android项目,我必须在其中解析RSS源。所以我在启动应用程序时通过互联网解析这些提要。但我的问题是在执行解析时程序会等待很长时间。所以我想实现服务,它将在后台进行处理。我怎么能这样做?
我的XML解析代码是:
try
{
feeditemshelper = new FeedItemsHelper();
RootElement root = new RootElement("rss");
Element channelElement = root.getChild("channel");
Element itemElement = channelElement.getChild("item");
itemElement.getChild("title").setEndTextElementListener(new EndTextElementListener()
{
@Override
public void end(String body)
{
LHParser.feeditemshelper.setTitle(body);
}
});
Element descElement = itemElement.getChild("description");
descElement.getChild("image").setEndTextElementListener(
new EndTextElementListener()
{
public void end(String body)
{
LHParser.feeditemshelper.setImage(body);
}
});
descElement.getChild("text").setEndTextElementListener(
new EndTextElementListener()
{
public void end(String body)
{
dflag++;
LHParser.feeditemshelper.setDescription(body,dflag);
}
});
itemElement.getChild("pubDate").setEndTextElementListener(new EndTextElementListener()
{
@Override
public void end(String body)
{
LHParser.feeditemshelper.setPubDate(body);
}
});
try
{
Xml.parse(
getInputStreamFromUrl("http://www.bjp.org/index.php?option=com_ninjarsssyndicator&feed_id=12&format=raw"),
Xml.Encoding.UTF_8, root.getContentHandler());
}
catch (Exception e)
{
e.printStackTrace();
}
}
catch (Exception e)
{
e.printStackTrace();
}
答案 0 :(得分:1)
您可以使用AsyncTask执行此操作。 Android Dev Site上有一个很好的例子。 您的解析逻辑需要在doInBackground方法中完成。
它不会阻止UI,因为doInBackGround是在单独的后台线程中执行的。
您可以在onPreExecute / onPostExecute方法中显示/隐藏进度对话框。 (onPreExecute / onPostExecute方法在UI线程上运行,因此您可以与UI进行交互,并通知用户 - 如果您愿意 - 在处理开始/结束时)。
答案 1 :(得分:1)
Devang。您可以使用AsyncTask在后台加载数据以获取详细信息,因此请转到ddewaele给出的链接。然后你想了解服务Click Here。