2012-02-14 7 views
0

私はscannerでファイルから読み込む小さなコードを実装し、値を配列に保存しています。 3〜6個のファイルを同時に読み込み、3〜6個の配列に保存してください。ファイルは私の電話のSDカードに保存されます。私の問題は、すべての時間を読み込むのが遅く、終了するまでに時間がかかりました。どのようにコードを書き直してより効率的にするか、またはファイルをpojectに保存し、アプリケーションをインストールしてファイルをインストールしそこからアクセスするときファイルからの読み込みが遅いです。

私が言及して

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

スキャナは、私の経験ではアンドロイドでは遅いです:usginは以下の通りです。

は私がAsyncTaskに解析コードを移動

  1. (http://developer.android.com/reference/android/os/AsyncTask.html)とを読み込むファイルを実行することにより、自分のアプリケーションの応答性を改善しましたバックグラウンドスレッド。
  2. スキャナの代わりにLineNumberReaderとString.split( ";")を使用する。

2番目のヒントはアプリで約10倍のスピードを上げましたが、ANRを回避するには遅すぎました。そのためバックグラウンドタスクです。

+0

ファイルの読み込みを高速化するためにasynctaskがどのように役立つのでしょうか?同じ時間に3〜6のファイルを読み込んでいます。 – prokopis

+1

これは、解析を高速化することはありませんが、ANRボックスがポップアップすることはありません。 – CjS

+0

CjSに感謝します。ちょうど1つのファイルでこれを試してみてください。非常に高速です。私はそれを試して、すべてのファイルを使って、十分速くなることを望みます – prokopis

関連する問題