程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> activity-AsyncTask 裡的代碼不能執行

activity-AsyncTask 裡的代碼不能執行

編輯:編程綜合問答
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();
        }
    }
}

最佳回答:


如果你的應用程序啟動完上面這段程序後就退出,那麼當主線程在 AsyncTask 運行時,主線程就可能死亡,從而就會孤立它。如果在退出時候需要這樣做,就在 Application.onTerminate 線程中運行,不要在 AsyncTask 線程中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved