INFO/global(207): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.以上是我在用android解析文件的时候遇到的问题 还有就是启动的时候总是出现这个错误:
 ActivityManager: Can't dispatch DDM chunk 46454154: no handler defined
[2011-01-05 16:58:43 - Mp3Player] ActivityManager: Can't dispatch DDM chunk 4d505251: no handler defined
哪位大哥能否帮我解释下这什么意思啊,怎么去修改啊!我找了一下午也没解决!跪求!

解决方案 »

  1.   

    楼主在做mp3播放?
    1.是可能你定义的byte数组太小。
    2.是你的activity没有定义一个extends Handler的变量,你要异步后台处理的话,必须要定义Handler。
      

  2.   

    我现在是在做mp3播放器哦。
    敢问在哪里定义byte数组啊。我已经定义了一个extends Handler的变量啊。但我继承的是DefaultHandler的。(public class Mp3ListContentHandler extends DefaultHandler)。我弄的歌曲大小蛮小的啊,按道理应该没问题啊!
    我写了一个下载文件:代码如下
    package mars.download;import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;public class HttpDownload {
    /**
     * 1.根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容对象
     * 2.通过URL对象,创建一个HttpURLConnection对象
     * 3.得到InputStream
     * 4.从InputStream当中读取数据
     */
    public String download(String urlStr){
    StringBuffer sb=new StringBuffer();
    String line=null;
    BufferedReader buffer=null;
    try{
    //创建一个URL文件
    URL url=new URL(urlStr);
    //创建一个Http连接
    HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
    //使用IO流读取数据
    buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    while((line=buffer.readLine())!=null){
    sb.append(line);
    }
    }catch(Exception e){
    e.printStackTrace();
    }finally{
    try{
    buffer.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    return sb.toString();
    }}
      

  3.   

    你在哪儿解析的xml?
    SAXParser parser = factory.newSAXParser();
    YourlHandler handler = new YourlHandler();
    parser.parse(context.openFileInput(tyPath), handler);parse断点调一下,肯定是hander里的问题。
      

  4.   

    我下了一个文件,保存在本机http://192.168.1.6:8080//mp3/resources.xml中,我启动了Tomcat,可以得到这个文件,但就是解析不了,我可以断定。问题就出现在parse()这个解析函数里面,因为这里没有输出,但我就是找不出在哪里!
    你能帮我看下么?下面是我的程序代码:
    package mars.mp3player;import java.io.StringReader;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.InputSource;
    import org.xml.sax.XMLReader;import mars.download.HttpDownload;
    import mars.model.Mp3Info;
    import mars.xml.Mp3ListContentHandler;
    import android.app.Activity;
    import android.app.ListActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.SimpleAdapter;public class Mp3ListActivity extends ListActivity {

        private static final int UPDATE = 1;
    private static final int ABOUT = 2;
    /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
        /**
         * 在用户点击MENU按钮之后,就会调用该方法,我们可以在这个方法中加入自己的按钮控件
         * */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    menu.add(0, UPDATE, 1, R.string.mp3list_update);
    menu.add(0, ABOUT, 2, R.string.mp3list_about);
    return super.onCreateOptionsMenu(menu);
    }
    @Override
    //判断用户点击的按钮
    public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    if(item.getItemId()==UPDATE){
    //用户点击了更新列表按钮
    String xml=downloadXML("http://192.168.1.6:8080//mp3/resources.xml");
    System.out.println("xml---->"+xml);
    //System.out.println("CCCCCCCCC"+" "+parse(xml));
    List<Mp3Info> mp3Infos=parse(xml);
    List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>();
    for (Iterator iterator = list.iterator(); iterator.hasNext();) {
    Mp3Info mp3Info=(Mp3Info)iterator.next();
    HashMap<String, String> map= new HashMap<String, String>();
    map.put("mp3_name", mp3Info.getMp3Name());
    map.put("mp3_size",mp3Info.getLrcSize());
    list.add(map);
    }
    SimpleAdapter simpleAdapter=new SimpleAdapter(this, list, R.layout.mp3info_item, new String[]{"mp3_name","mp3_size"}, new int[]{R.id.mp3_name,R.id.mp3_size});
    setListAdapter(simpleAdapter);
    }
    if(item.getItemId()==ABOUT){
    //用户点击了关于按钮
    }
    return super.onOptionsItemSelected(item);
    }
    private String downloadXML(String urlStr){
    HttpDownload httpDownloader=new HttpDownload();
    String result=httpDownloader.download(urlStr);
    return result;
    }
    private List<Mp3Info> parse(String xmlStr){     SAXParserFactory saxParseFactory=SAXParserFactory.newInstance();
         try{
         XMLReader xmlReader=saxParseFactory.newSAXParser().getXMLReader();
         List<Mp3Info> infos=new ArrayList<Mp3Info>();
         Mp3ListContentHandler mp3ListContentHandler=new Mp3ListContentHandler(infos);
         xmlReader.setContentHandler(mp3ListContentHandler);
         xmlReader.parse(new InputSource(new StringReader(xmlStr)));
         for (Iterator iterator = infos.iterator(); iterator.hasNext();) {
    Mp3Info mp3Info = (Mp3Info) iterator.next();
    System.out.println(mp3Info);
    System.out.println("bbbbbbb");//这里经过调试,输不出结果。 }
         }
         catch(Exception e){
         e.printStackTrace();
         }
         return null;
        }
    }
      

  5.   

    下面是我的Handler类:
    package mars.xml;import java.util.List;import mars.model.Mp3Info;import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;public class Mp3ListContentHandler extends DefaultHandler{
    private List<Mp3Info> infos=null;
    private Mp3Info mp3Info=null;
    private String tagName=null;
    public Mp3ListContentHandler(List<Mp3Info> infos) {
    super();
    this.infos = infos;
    } public List<Mp3Info> getInfos() {
    return infos;
    } public void setInfos(List<Mp3Info> infos) {
    this.infos = infos;
    } @Override
    public void endDocument() throws SAXException {
    // TODO Auto-generated method stub
    super.endDocument();
    } @Override
    public void endElement(String uri, String localName, String qName)
    throws SAXException {
    // TODO Auto-generated method stub
    System.out.println("-------------");//这里有输出 if(qName.equals("resource")){
    System.out.println("aaaaaaaa");//这里没输出 infos.add(mp3Info);
    }
    tagName="";
    } @Override
    public void startDocument() throws SAXException {
    // TODO Auto-generated method stub
    super.startDocument();
    } @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    // TODO Auto-generated method stub
    String temp=new String(ch,start,length);
    if(tagName.equals("id")){
    mp3Info.setId(temp);
    }
    else if(tagName.equals("mp3.name")){
    mp3Info.setMp3Name(temp);
    }
    else if(tagName.equals("mp3.size")){
    mp3Info.setMp3Size(temp);
    }
    else if(tagName.equals("lrc.name")){
    mp3Info.setLrcName(temp);
    }
    else if(tagName.equals("lrc.size")){
    mp3Info.setLrcSize(temp);
    }
    } @Override
    public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
    // TODO Auto-generated method stub
    this.tagName=localName;
    if(tagName.equals("resource")){
    mp3Info=new Mp3Info();
    }
    }
    }
      

  6.   

    我也遇到了同样的问题,好像是 Mp3ListActivity里面的
    这句有问题: xmlReader.parse(new InputSource(new StringReader(xmlStr)));
    我试了,在他之前测试 System.out.println("-----")有输出,放在他之后就没有了,怎么回事呀!哪位高人知道呀!
      

  7.   

    兄弟们,同样的问题我遇到了,已经解决,具体办法是:
    在xmlReader.parse(new InputSource(new StringReader(xmlStr)));前
    可能是xmlStr中含有空字符,我使用.trim()后再传递,OK了。希望对大家有用。