MediaScanner に問題があります。これを使用して、次のコードで単一のファイルをスキャンします。
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) の開始時にファイルをスキャンすると、完全に機能します。スキャナーを接続し、ファイルをスキャンして完了です。
しかし、スキャナーを呼び出してから別のアクティビティに移動すると、MediaScanner は onScanCompleted メソッドを呼び出さないため、メモリ リークが発生します。また、アクティビティを終了する前にスキャナーで unbindService() を使用すると、スキャナーが機能しません (ファイルがギャラリー アプリに表示されません)。
アクティビティを終了するときにスキャナーを使用する必要があります。私に何ができる?