在片段中使用 MediaScannerConnection.scanFile()?

我正在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.");

                }

            });

}


蓝山帝景
浏览 273回答 1
1回答

UYOU

首先,从 a 下载一个Fragment可能很快就会被破坏的文件不是一个好主意。您应该改用前台服务。如果您仍然想坚持使用片段,在您的情况下,您可以使用应用程序上下文。在开始下载之前,将应用程序上下文的引用存储为片段中的字段。Context appContext;// Inside onCreateViewappContext = getContext().getApplicationContext();然后您可以使用应用程序上下文来扫描媒体。这不会导致内存泄漏,因为应用程序上下文是单个共享实例,并且在应用程序被终止之前不会被销毁。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java