我对 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() 与扫描仪一起使用,则扫描仪将无法工作(该文件不会出现在图库应用程序中)。
我离开活动时需要使用扫描仪。我能做些什么?