Android AsyncTaskDoinBackground

Android AsyncTaskDoinBackground,android,android-asynctask,Android,Android Asynctask,在我的应用程序中,我同时使用2个异步任务将2个XML读入字符串。 然而,有时当我运行应用程序时,我只会看到白色屏幕,过一会儿它就会回到桌面。大体上,我正在做dowhile(!read1 | | |!read2)来等待xml被读取。然后我进一步处理字符串 这是我的asyncTask代码,另一个非常类似 private class Read1 extends AsyncTask<String, Void, Void>{ @Override protect

在我的应用程序中,我同时使用2个异步任务将2个XML读入字符串。 然而,有时当我运行应用程序时,我只会看到白色屏幕,过一会儿它就会回到桌面。大体上,我正在做dowhile(!read1 | | |!read2)来等待xml被读取。然后我进一步处理字符串

这是我的asyncTask代码,另一个非常类似

private class Read1 extends AsyncTask<String, Void, Void>{

        @Override
        protected Void doInBackground(String... read) {
            String text="";
            try {

                File sdcard = Environment.getExternalStorageDirectory();
                File file = new File(sdcard,read[0]);

                    BufferedReader br = new BufferedReader(new InputStreamReader(
                            new FileInputStream(file), "ISO-8859-2"),8192);
                    String line;   
                    while ((line = br.readLine()) != null) {

                                text+=line;

                                } br.close();}
                catch (IOException e) {
                    e.printStackTrace();
                }

            text1=text;
            read1=true;
            return null;
        }       
    }
私有类Read1扩展异步任务{
@凌驾
受保护的Void doInBackground(字符串…读取){
字符串文本=”;
试一试{
文件sdcard=Environment.getExternalStorageDirectory();
File File=新文件(SD卡,读取[0]);
BufferedReader br=新的BufferedReader(新的InputStreamReader(
新文件输入流(文件),“ISO-8859-2”),8192);
弦线;
而((line=br.readLine())!=null){
文本+=行;
}br.close();}
捕获(IOE异常){
e、 printStackTrace();
}
text1=文本;
read1=真;
返回null;
}       
}

事实上。大多数情况下,当我关闭应用程序,然后在短时间内再次运行它时,我会看到这个白色屏幕。有什么想法吗?

不要在main中等待,而是在onPostExecute()中进一步处理字符串。

如何调用该任务?“返回桌面”听起来好像要崩溃了。您是否看到logcat输出中出现崩溃?唯一可疑的是:04-11 22:58:26.900:E/dalvikvm(17425):threadid=2:stapped on threadid=1,放弃04-11 22:58:26.900:D/dalvikvm(17425):threadid=2:向threadid=1(tid=17425)发送两个SIGSTKFLTs以导致调试程序转储04-11 22:58:26.900:a/libc(17425):致命信号16(SIGSTKFLT)在0x00004411(代码=-6),线程17425(project.listxml),我像这样调用任务:new Read1().execute(“nbp.xml”);好的,稍后我将不得不解析这个字符串以从xmls获取一些信息,并将它们放入列表视图中。你的意思是我应该在onPostExecute()中完成所有这些吗?是的,你应该在最后一个完成任务的onPostExecute()中完成这些。并且在主要的时候把它去掉。