1

MediaScanner有問題。我用它來掃描一個文件與此代碼:MediaScanner,onScanCompleted不叫

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(),則掃描儀不起作用(該文件不會出現在圖庫應用程序中)。

我需要在離開活動時使用掃描儀。我能做什麼?

回答

2

還有其他方法可以使用靜態scanFile()方法或通過發送BroadCast將文件添加到Gallery。通常這些應該適合你的需要。如果您需要對添加過程進行一些控制,則只需要MediaScannerConnection。

我寫了一篇關於如何使用其他methods to trigger the MediaScanner的博客文章。

+1

非常感謝Wolfram!很好的答案:D – Xithias