1

MediaScanner에 문제가 있습니다. 내가이 코드를 하나의 파일을 스캔하는 데 사용 :MediaScanner, onScanCompleted가 호출되지 않았습니다.

public class SingleMediaScanner implements MediaScannerConnectionClient { 

private static final String TAG = "SingleMediaScanner"; 

public MediaScannerConnection mMs; 
private String mFile; 

public SingleMediaScanner(Context context, String s) { 
    mFile = s; 
    mMs = new MediaScannerConnection(context, this); 
    mMs.connect(); 
} 

public void onMediaScannerConnected() { 
    Log.d(TAG, "MediaScanner conectado"); 
    mMs.scanFile(mFile, null); 
} 

public void onScanCompleted(String path, Uri uri) { 
    Log.d(TAG, "MediaScanner terminó de escanear"); 
    mMs.disconnect(); 
} 
} 

내가 활동 (에서 onCreate)의 시작 부분에 파일을 스캔하는 경우, 그것은 완벽하게 작동합니다. 스캐너가 연결되고 파일을 스캔 한 다음 스캐너가 완료됩니다.

그러나 스캐너를 호출 한 다음 다른 활동으로 이동하면 onScanCompleted 메서드를 호출하지 않기 때문에 MediaScanner에서 메모리 누수가 발생합니다. 그리고 활동을 떠나기 전에 스캐너에 unbindService()를 사용하면 스캐너가 작동하지 않습니다 (파일이 갤러리 앱에 표시되지 않음).

활동을 종료 할 때 스캐너를 사용해야합니다. 내가 무엇을 할 수 있을지?

답변

2

static scanFile() 메서드를 사용하거나 BroadCast를 보내어 다른 방법으로 파일을 갤러리에 추가 할 수 있습니다. 일반적으로 이들은 귀하의 필요에 잘 맞아야합니다. 추가 프로세스를 일부 제어해야하는 경우에만 MediaScannerConnection이 필요합니다.

다른 사용 방법에 대한 블로그 글을 작성했습니다 methods to trigger the MediaScanner.

+1

감사합니다. Wolfram! 좋은 대답 : D – Xithias