我正在Fragment異步下載文件,并希望MediaScannerConnection.scanFile()在下載完成時調(diào)用。如果我坐下來等待下載完成而不離開我的 Fragment(或其托管活動),我就能獲得想要的結(jié)果。我面臨的問題是MediaScannerConnection.scanFile()需要一個上下文,我不想將用戶限制在一個Fragment/ 內(nèi)Activity,以便上下文不為空。我如何MediaScannerConnection.scanFile()在后臺使用,以便我可以掃描文件并Toast在掃描完成時顯示一個,同時仍然在我的應(yīng)用程序的其他部分導(dǎo)航(甚至跳出我的應(yīng)用程序)?這就是我目前正在掃描的方式(帶有上下文):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條經(jīng)驗 獲得超4個贊
首先,從 a 下載一個Fragment可能很快就會被破壞的文件不是一個好主意。您應(yīng)該改用前臺服務(wù)。
如果您仍然想堅持使用片段,在您的情況下,您可以使用應(yīng)用程序上下文。
在開始下載之前,將應(yīng)用程序上下文的引用存儲為片段中的字段。
Context appContext;
// Inside onCreateView
appContext = getContext().getApplicationContext();
然后您可以使用應(yīng)用程序上下文來掃描媒體。
這不會導(dǎo)致內(nèi)存泄漏,因為應(yīng)用程序上下文是單個共享實例,并且在應(yīng)用程序被終止之前不會被銷毀。
添加回答
舉報
0/150
提交
取消