在不同的Android Android中处理XmlParsing

时间:2014-04-09 17:47:25

标签: android multithreading xml-parsing android-handler

我正在开发一个应用程序,我必须从URL中解析XML中的数据。我的解析器现在正在运行并向我显示数据,但我遇到的问题是我无法正确处理解析数据的过程。我的应用程序按片段分割,每个片段都会显示一些信息。我正在从一个片段进行所有解析/ http连接。现在应用程序不显示数据,我使用Log.d来显示结果,但是当数据显示在logcat上时,应用程序就像冻结或暂停一样。这是连接到xml的URL的方法:

     public void loadXML(){
    Thread thread=new Thread(new Runnable(){
    public void run(){
        try{
            URL url=new URL(FEED_URL);
            HttpURLConnection conn=(HttpURLConnection)url.openConnection();
            conn.setReadTimeout(1000);/*miliseconds*/
            conn.setConnectTimeout(1500);
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            conn.connect();
            InputStream stream=conn.getInputStream();
            XmlPullParserFactory factory=XmlPullParserFactory.newInstance();    /*Instantiate new parser*/
            XmlPullParser xmlParser=factory.newPullParser();
            xmlParser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            xmlParser.setInput(stream,null);
            items=(ArrayList<Item>) XmlFeedParser.parser(xmlParser);//the method that does the parsing
            stream.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
});
thread.start();
}

据我所知,我必须使用Handler,但我只有这一行

  private Handler handler = new Handler(){ 
在Fragment类中,我在我的片段的onStart()中调用了loadXML()方法。除了代码中显示的Thread,我不是创建任何其他线程或调用任何其他方法。 任何帮助或信息将不胜感激。感谢

2 个答案:

答案 0 :(得分:0)

您是否尝试过调用getActivity()。runOnUiThread(action)?

答案 1 :(得分:0)

我会在Parsing XML Data上阅读这个Android开发者页面。我认为那里的例子正是你所寻找的。