Android解析数据的速度非常慢

Android解析数据的速度非常慢,android,rss-reader,Android,Rss Reader,我正在尝试制作一个解析RSS提要的应用程序。我运行我的应用程序,但是数据的获取非常慢,尽管源链接()非常快 我需要我的应用程序快速响应 我的应用程序代码: package com.sta.map; import java.util.ArrayList; import java.util.HashMap; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Element; import

我正在尝试制作一个解析RSS提要的应用程序。我运行我的应用程序,但是数据的获取非常慢,尽管源链接()非常快

我需要我的应用程序快速响应

我的应用程序代码:

package com.sta.map;

import java.util.ArrayList;
import java.util.HashMap;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;


import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ListView;
import android.widget.TextView;

public class POSTS extends Activity {
    static final String KEY_ARTIST = "artist";
    static final String KEY_THUMB_URL = "thumb_url";

    ListView list;
    WbAdapter adapter;

    static String URL = "http://api.androidhive.info/music/music.xml";

    ProgressDialog pDialog;

    ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.posts);

        new ParseXMLTask().execute();
    }

    class ParseXMLTask extends AsyncTask<String, String, String> {
        protected void onPreExecute() {
            // Showing progress dialog before sending http request
            pDialog = new ProgressDialog(POSTS.this);
            pDialog.setMessage("Please wait..");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(false);
            pDialog.show();
        }
        @Override
        protected String doInBackground(String... unused) {
           XMLParser parser = new XMLParser();
           String xml = parser.getXmlFromUrl(url); // getting XML from URL
            return xml;
        }

        @Override
        protected void onPostExecute(String result) {
            pDialog.dismiss();
            XMLParser parser = new XMLParser();
            Document doc = parser.getDomElement(result); // getting DOM element

            NodeList nl = doc.getElementsByTagName("song");
            // looping through all song nodes <song>
            for (int i = 0; i < nl.getLength(); i++) {
                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                Element e = (Element) nl.item(i);
                // adding each child node to HashMap key => value
                map.put(KEY_ARTIST, parser.getValue(e, KEY_ARTIST));
                map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));

                // adding HashList to ArrayList
                songsList.add(map);
            }

            list=(ListView)findViewById(R.id.list);
            adapter= new WbAdapter(POSTS.this, songsList);        
            list.setAdapter(adapter);
        }   
    }
}
编辑1:在清单中,我发现以下代码:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

我删除了android:targetSdkVersion=“16”的这一部分,解析变得非常快


为什么???

我发现,在大文件上,XMLParser的性能非常差,并且非常占用内存。特别是如果xml中的一个节点非常大,如编码位图。想想看,它必须一次将整个字符串加载到内存中。我切换到自己解析文件,因为我只寻找一个特定的部分,并使用BufferedInputStream读取数据,以避免内存峰值


这可能不是您的问题,但要知道,对于非常大的文件,XMLParser是不可用的。

哪一部分比较慢?网络接入?XML解析?RSS解析?我认为HttpPost=newhttppost(url);为什么不试着对不同部分计时,看看是什么让你慢下来?请检查我的代码,并告诉我,当你使用Traceview精确地确定事情慢下来的地方时,你学到了什么?
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />