2011-09-17 14 views
0

나는 인터넷에서 이미지를 다운로드 loop 있습니다.
아래의 코드를 사용하여 미디어 콘텐츠 제공자를 새 이미지로 업데이트합니다.MediaScannerConnection.scanFile을 사용하는 것이 좋지 않습니까?

오늘 나는 400 개의 이미지를 다운로드하려고했는데 아래의 코드는 모든 이미지에서 실행되었습니다.
그래서 이걸 400 번이나 부릅니다.
더 나은 방법이 있어야할까요?

MediaScannerConnection.scanFile(ctx,new String[] { path.toString() },null,new  MediaScannerConnection.OnScanCompletedListener() {  

    public void onScanCompleted(String path, Uri uri) {  
    Log.i("ExternalStorage", "Scanned " + path + ":");  
    Log.i("ExternalStorage", "-> uri=" + uri); 
    } 
}); 
+0

을 이 질문에 대한 답변을 원하신다면 – Erik

답변

0

즉각적인 결과를 원할 경우 잘하고있는 것 같습니다.

당신은 모든 파일을 다운로드 할 때 대신 트리거 할 수 후 즉각적인 결과를 필요로하지 않으면 카드 만 장착 된 시스템 말해서 전체 SD 카드의 자신을 스캔 :

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory()))); 
+0

시스템에 걸린 부하가 당신의 대답에 적을 것 같습니까?. 하나의 활동에서 SD 카드를 사용하는 경우 해당 방송을 보내면 연결이 끊어 질까요? – Erik

+0

사용자가 sd 카드에 수천 개의 파일을 가지고있는 경우 미디어 스캐너는 모든 파일을 다시 검사해야하므로 실제 시스템에 더 많은 부하가 발생할 수 있지만 대부분의 사용자는 그 파일이 많지 않습니다. 이 브로드 캐스트를 보내면 다른 애플리케이션에 부정적인 영향을 미치지 않아도되지만 연결이 끊어 질 것이라고 생각하는 것이 확실하지는 않습니다. – satur9nine

+0

sendBroadcast가 SD 카드를 끊지 만 잘못 생각한 것 같습니다. 잠시 동안 두 가지 방법을 모두 시도해 봅니다. – Erik

관련 문제