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

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

最佳答案

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

我写了一篇有关如何使用其他methods to trigger the MediaScanner的博客文章。

07-28 03:18