每当我运行我的Android应用程序时,它说“XYZ没有响应”

时间:2012-07-23 05:10:28

标签: java android

直到昨天它一直运行良好...我是android编程的新手,任何帮助都会很棒.. 在我的应用程序中,我正在解析下载的xml文件,然后创建动态UI ... 这是我的代码片段..

private class ParseXML extends AsyncTask<Integer, Integer, Document>{

    public void onPostExecute(Document d) {


        ParseDocument(d); }



    @Override
protected Document doInBackground(Integer... params) {
    // TODO Auto-generated method stub
     DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();

    try {
        //Uri uri = Uri.parse("android.resource://com.example.xml_parser/raw/options");
        InputStream is=getResources().openRawResource(R.raw.options);

        DocumentBuilder db = dbf.newDocumentBuilder();
        dom=db.parse(is);
        Log.i(TAG,"parsing done");

    }

    catch(ParserConfigurationException pce){
        pce.printStackTrace();
    }
    catch(SAXException se){
        se.printStackTrace();
    }
    catch(IOException ioe){
        ioe.printStackTrace();
    }
    return dom;


}

1 个答案:

答案 0 :(得分:2)

错误是,您正在尝试解析主UI线程中的XML。这意味着您限制用户使用UI执行操作。在Andorid中需要注意的是,每当应用程序在5秒钟内没有响应时,您将被使用Applicaation Not Responding Dialog。

所以你需要做的是,使用AsyncTask解析你的XML,然后从中更新你的Ui。

这是一个例子,

https://stackoverflow.com/a/5806402/603744

AsyncTask包含三种方法,即

  1. doInBackground - 相当于你的主题。
  2. onPostExcecute - 在doInBackground完成其任务时调用。
  3. onPreExecute-在doInBackground被调用之前调用。
  4. 第二种和第三种方法与UI相关,您可以在此处执行任何基于UI的操作,第一种方法是您的背景线程,您必须进行巨大的计算,因此不会影响您的用户界面。