2012-02-14 2 views
0

저는 스캐너로 파일에서 작은 코드를 구현하고 배열에 값을 저장했습니다. 같은 시간에 3-6 개의 파일을 읽고 3-6 개의 배열로 번호를 저장하십시오. 파일은 내 전화기의 SD 카드에 저장됩니다. 내 문제는 모든 thoses를 읽는 것이 천천히 끝나기까지 오랜 시간이 걸린다는 것입니다. 어떻게하면 코드를 다시 작성하여 효율적으로 만들 수 있습니까? 아니면 파일을 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

감사합니다. 지금은 하나의 파일로 시도해 보시고 매우 빠릅니다. 나는 그것을 시도 할 것이고 모든 파일을 가지고있을 것이고, 충분히 빠를 것으로 희망을 준다. – prokopis

관련 문제