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() メソッドを使用するか、BroadCast を送信することによって、ファイルをギャラリーに追加する方法は他にもあります。通常、これらはあなたのニーズにうまく合うはずです。追加プロセスを制御する必要がある場合にのみ、MediaScannerConnection が必要です。

他の方法を使用して MediaScanner をトリガーする方法についてのブログ記事を書きました。

于 2012-10-31T08:56:40.540 に答える