我如何实现服务

问题描述:

我开发了一个Android项目,我必须解析RSS源。所以我在启动应用程序的时候通过互联网解析这个feed。但我的问题是执行分析时,程序将等待很长时间。所以我想实现这个服务,这个服务会在后台处理。我如何做到这一点?我如何实现服务

我的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

你试图做什么来让你的程序作为服务运行?它是如何失败的? – sarnold 2011-06-06 06:56:05

可以使用的AsyncTask做到这一点。 Android Dev Site上有一个很好的例子。 您的解析逻辑需要在doInBackground方法中完成。

它不会阻止用户界面,因为在单独的后台线程中执行doInBackGround。

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

Devang。你可以使用AsyncTask在后台加载数据来获取它的细节,所以去链接是由ddewaele给出的。并且你想知道服务,然后Click Here