android AsyncTask xml parsing



我尝试在AsyncTask中解析一个大的xml文档。FeinstaubActivity开始,但我只看到一个黑屏,然后回到RSSReaderActivity,从那里我开始了另一个活动。

日志:

DEBUG/SntpClient(58): request time failed: java.net.SocketException: Address family not supported by protocol
WARN/KeyCharacterMap(623): No keyboard for id 0
WARN/KeyCharacterMap(623): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
INFO/ActivityManager(58): Starting activity: Intent { cmp=de.test.testapp/.FeinstaubActivity }
DEBUG/AndroidRuntime(623): Shutting down VM
WARN/dalvikvm(623): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
WARN/dalvikvm(623): threadid=7: thread exiting with uncaught exception (group=0x4001d800)
INFO/Process(623): Sending signal. PID: 623 SIG: 9
INFO/ActivityManager(58): Process de.test.testapp (pid 623) has died.
INFO/WindowManager(58): WIN DEATH: Window{4402be18 AtchDlg:de.test.testapp/de.test.testapp.RSSReaderActivity paused=false}
INFO/WindowManager(58): WIN DEATH: Window{4400dd68 de.test.testapp/de.test.testapp.RSSReaderActivity paused=false}
INFO/ActivityManager(58): Start proc de.test.testapp for activity de.test.testapp/.RSSReaderActivity: pid=631 uid=10035 gids={3003}
DEBUG/dalvikvm(32): GC_EXPLICIT freed 299 objects / 11488 bytes in 162ms
INFO/UsageStats(58): Unexpected resume of de.test.testapp while already resumed in de.test.testapp
DEBUG/dalvikvm(32): GC_EXPLICIT freed 57 objects / 2440 bytes in 138ms
INFO/ActivityManager(58): Displayed activity de.test.testapp/.RSSReaderActivity: 411 ms (total 532 ms)
DEBUG/dalvikvm(32): GC_EXPLICIT freed 2 objects / 48 bytes in 126ms
DEBUG/dalvikvm(631): GC_FOR_MALLOC freed 3294 objects / 461928 bytes in 72ms
DEBUG/dalvikvm(631): GC_FOR_MALLOC freed 2750 objects / 557024 bytes in 59ms
DEBUG/dalvikvm(631): GC_FOR_MALLOC freed 2786 objects / 506288 bytes in 60ms
WARN/InputManagerService(58): Got RemoteException sending setActive(false) notification to pid 623 uid 10035

代码
    Document document = null;
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.feinstaub);
            document = (Doxument) new ParseXMLFile().execute();
    }
    private class ParseXMLFile extends AsyncTask<Integer, Integer, Document>{
    @Override
    protected Document doInBackground(Integer... params) {
        Document parsedXML = null;
        try {
            parsedXML = builder.parse(getApplicationContext().getResources().openRawResource(R.raw.finedust));
        } catch (NotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return parsedXML;
    }
}

的问候浮动

啊,不确定你能做到:http://developer.android.com/reference/android/os/AsyncTask.html显示execute返回void。

你想要这个:

Document document = null;
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.feinstaub);
       new ParseXMLFile().execute();
    }
    void setDocument(Document document){ this.document = document; }
    private class ParseXMLFile extends AsyncTask<Integer, Integer, Document>{
    @Override public void onPostExecute(Document d){ setDocument(d); }
    @Override
    protected Document doInBackground(Integer... params) {
        Document parsedXML = null;
        try {
            parsedXML = builder.parse(getApplicationContext().getResources().openRawResource(R.raw.finedust));
        } catch (NotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return parsedXML;
    }
}

有一点你需要做的范围:传递父活动或声明setDocument方法适当地以某种方式,所以你可以从AsyncTask内部调用它,但类似的东西应该做它。

相关内容

  • 没有找到相关文章

最新更新