1

我对 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() 与扫描仪一起使用,则扫描仪将无法工作(该文件不会出现在图库应用程序中)。

我离开活动时需要使用扫描仪。我能做些什么?

4

1 回答 1

2

还有其他方法可以使用静态 scanFile() 方法或发送广播将文件添加到库中。通常这些应该适合您的需要。如果您需要对添加过程进行一些控制,则只需要 MediaScannerConnection。

我写了一篇关于如何使用其他方法来触发 MediaScanner的博客文章。

于 2012-10-31T08:56:40.540 回答