2012-02-14 78 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. 移動解析代碼到的AsyncTask(http://developer.android.com/reference/android/os/AsyncTask.html),並運行該文件中讀取提高了我的應用程序響應後臺線程。
  2. 使用LineNumberReader和String.split(「;」)代替掃描儀。

第二個提示在我的應用程序中加快了10倍左右,但仍然太慢以至於無法避免ANR,因此是後臺任務。

+0

asynctask如何幫助加快文件的閱讀速度?我正在同時閱讀3-6個文件。 – prokopis 2012-02-14 20:30:01

+1

它不會加速解析本身,但它會阻止ANR框彈出。 – CjS 2012-02-15 13:18:13

+0

感謝CjS。只用一個文件就可以試用它,速度非常快。我會嘗試它,並與所有的文件,並希望能夠足夠快 – prokopis 2012-02-15 20:32:11