clcurie_11 2013-03-06 01:46 采纳率: 6.7%
浏览 3234
已采纳

AsyncTask 里的代码不能执行

程序中有一个 AsyncTask 方法,当程序退出之前会被执行。它可以得到当前位置并解析 xml配置文件。当前位置被检索了,但是解析操作未执行。
在 Main Activity 中调用 AsyncTask

   public void quitApplication()
        {       
            FinishProcess fProcess = new FinishProcess();
            fProcess.execute(this);
    }
AsyncTask:
public class FinishProcess extends AsyncTask<Main, Void, Void>
{
    @Override
    protected Void doInBackground(Main... params) {
        LocationHandler lh = new LocationHandler();
        try {
            lh.getLocationSingle(null, params[0]);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        parseXML(params[0]);
        return null;
    }
    private void parseXML(Main params)
    {
        String ANDROID_ID = "android:id";       
        Resources resources = params.getResources();
        try {
            InputStream fXmlFile = resources.openRawResource(R.raw.pages);
            //Reads xml file and gets the node types and attributes
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("*");

            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);   
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    System.out.println(eElement.getNodeName());
                }
            }
        } 
        catch (Exception e) {
            System.out.println("Catch");
            e.printStackTrace();
        }
    }
}
  • 写回答

3条回答

  • LiDaming_and 2013-03-06 07:29
    关注

    如果你的应用程序启动完上面这段程序后就退出,那么当主线程在 AsyncTask 运行时,主线程就可能死亡,从而就会孤立它。如果在退出时候需要这样做,就在 Application.onTerminate 线程中运行,不要在 AsyncTask 线程中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog