我正在Fragment異步下載文件,并希望MediaScannerConnection.scanFile()在下載完成時調用。如果我坐下來等待下載完成而不離開我的 Fragment(或其托管活動),我就能獲得想要的結果。我面臨的問題是MediaScannerConnection.scanFile()需要一個上下文,我不想將用戶限制在一個Fragment/ 內Activity,以便上下文不為空。我如何MediaScannerConnection.scanFile()在后臺使用,以便我可以掃描文件并Toast在掃描完成時顯示一個,同時仍然在我的應用程序的其他部分導航(甚至跳出我的應用程序)?這就是我目前正在掃描的方式(帶有上下文):public static void mediaScanFile(Context context, String path) { MediaScannerConnection.scanFile(context, new String[]{path}, null, new MediaScannerConnection.OnScanCompletedListener() { public void onScanCompleted(String path, Uri uri) { Log.d("Tag", "Scan finished. You can view the image in the gallery now."); } });}
1 回答

UYOU
TA貢獻1878條經驗 獲得超4個贊
首先,從 a 下載一個Fragment可能很快就會被破壞的文件不是一個好主意。您應該改用前臺服務。
如果您仍然想堅持使用片段,在您的情況下,您可以使用應用程序上下文。
在開始下載之前,將應用程序上下文的引用存儲為片段中的字段。
Context appContext;
// Inside onCreateView
appContext = getContext().getApplicationContext();
然后您可以使用應用程序上下文來掃描媒體。
這不會導致內存泄漏,因為應用程序上下文是單個共享實例,并且在應用程序被終止之前不會被銷毀。
添加回答
舉報
0/150
提交
取消