我如何实现服务

时间:2011-06-06 06:54:02

标签: android

我开发了一个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();
        }

2 个答案:

答案 0 :(得分:1)

您可以使用AsyncTask执行此操作。 Android Dev Site上有一个很好的例子。 您的解析逻辑需要在doInBackground方法中完成。

它不会阻止UI,因为doInBackGround是在单独的后台线程中执行的。

您可以在onPreExecute / onPostExecute方法中显示/隐藏进度对话框。 (onPreExecute / onPostExecute方法在UI线程上运行,因此您可以与UI进行交互,并通知用户 - 如果您愿意 - 在处理开始/结束时)。

答案 1 :(得分:1)

Devang。您可以使用AsyncTask在后台加载数据以获取详细信息,因此请转到ddewaele给出的链接。然后你想了解服务Click Here