我目前正在尝试扫描文件系统中的mp3文件。我做了一个AsyncTask
来扫描目录,如果找到一个子文件夹,它会再次为该子文件夹调用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 :(得分:2)
有没有办法递归调用doInBackground()?
我不会这样做。相反,将“扫描目录,如果找到子文件夹”移动到使用递归的其他方法(例如,scanDirectory()
)。然后,让doInBackground()
第一次调用您的新方法。