我正在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
提交
取消