2014-01-23 67 views
0

我正在尝试扫描文件系统的mp3文件。我做了一个AsyncTask扫描目录,如果找到一个子文件夹,它会再次为该子文件夹调用doInBackground()等等。但是,这似乎会使应用程序崩溃。有什么办法递归地调用doInBackground()如何调用doInBackground()递归地

@Override 
    protected List<File> doInBackground(String... params) { 

     if (isCancelled()) return foundFiles_; 
     publishProgress(String.valueOf(foundFiles_.size())); 
     File file = new File(params[0]); 
     String [] files = file.list(); 
     for(String fileName : files) 
     { 
      File foundFile = new File(fileName); 
      if(foundFile.isDirectory()) 
      { 
       doInBackground(fileName); 
      } 
      else 
       foundFiles_.add(foundFile); 
     } 

     return foundFiles_; 
    } 
+0

doInBackground()只是一个在另一个线程中运行的方法,所以你应该能够递归地调用他。请发布一些代码来帮助你。 – Daniel

+0

我粘贴的代码:) –

+0

你得到什么错误?,请张贴logcat跟踪 – Daniel

回答

2

有什么办法来递归调用doInBackground()?

我不会这么做。相反,将“扫描目录并且如果找到子文件夹”移动到使用递归的其他方法(例如,scanDirectory())。然后,让doInBackground()对您的新方法进行第一次调用。