2012-02-14 3 views
0

У меня есть небольшой код чтения из файла со сканером и сохранение значений в массиве. я читаю 3-6 файлов одновременно и сохраняю числа в 3-6 массивах. файлы сохраняются на SD-карте моего телефона. моя проблема в том, что это медленное чтение всех томов, и это заняло много времени, пока не закончится. как я могу переписать код, чтобы быть более эффективным, или файлы должны быть сохранены в проекте, и когда я устанавливаю приложение на устройство, чтобы установить файлы и получить к ним доступ оттудачтение из файла происходит медленно в android

код, который есть usgin является ниже:

try { 

File I= new File(Environment.getExternalStorageDirectory().toString()+"/ECG/test/I.txt"); 
scannerI = new Scanner(I); 
scannerI.useDelimiter(";"); 
for(int sampleIdx = 0; scannerI.hasNext();){ 
timiI[sampleIdx] = scannerI.nextDouble(); 
sampleIdx++; 

if(sampleIdx == SAMPLE_SIZE && !Thread.currentThread().isInterrupted()){ 
//do something 
sampleIdx = 0; 
        } 
       }   
      } 
} 

, как я уже и до того я использовать более 1 файлов, а по массивы

ответ

3

сканер медленно Android в моем опыте.

я улучшил свое время отклика приложений на

  1. Moving код синтаксического анализа в AsyncTask (http://developer.android.com/reference/android/os/AsyncTask.html) и запустив файл для чтения в фоновый поток.
  2. Использование LineNumberReader и String.split (";") вместо сканера.

2-я подсказка ускорилась в моем приложении примерно на 10 раз, но все еще была слишком медленной, чтобы избежать ANR, следовательно, фоновая задача.

+0

Как поможет асинктас, чтобы ускорить чтение файлов? Я читаю 3-6 файлов одновременно. – prokopis

+1

Это не ускоряет синтаксический разбор, но это предотвратит появление окна ANR. – CjS

+0

спасибо CjS. попробуйте сейчас только с одним файлом и очень быстро. я попробую его и со всеми файлами и дам надежду быть достаточно быстрым – prokopis

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