我的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的博客文章。