2014-01-23 7 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() первый вызов вашего нового метода.

Смежные вопросы