Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在片段中使用MediaScannerConnection.scanFile()?_Java_Android_Android Asynctask_Android File_Android Mediascanner - Fatal编程技术网

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

Java 在片段中使用MediaScannerConnection.scanFile()?,java,android,android-asynctask,android-file,android-mediascanner,Java,Android,Android Asynctask,Android File,Android Mediascanner,我正在从片段中异步下载文件,并希望在下载完成时调用MediaScannerConnection.scanFile()。如果我坐在那里等待下载完成,而不离开我的片段(或它的宿主活动),我就能得到想要的结果。我面临的问题是,MediaScannerConnection.scanFile()需要一个上下文,我不想将用户限制在片段/活动中,这样上下文就不会为空 如何在后台使用MediaScannerConnection.scanFile(),以便在扫描完成后仍在我的应用程序的其他部分导航(甚至从我的应用

我正在从
片段中异步下载文件,并希望在下载完成时调用
MediaScannerConnection.scanFile()
。如果我坐在那里等待下载完成,而不离开我的片段(或它的宿主活动),我就能得到想要的结果。我面临的问题是,
MediaScannerConnection.scanFile()
需要一个上下文,我不想将用户限制在
片段
/
活动
中,这样上下文就不会为空

如何在后台使用
MediaScannerConnection.scanFile()
,以便在扫描完成后仍在我的应用程序的其他部分导航(甚至从我的应用程序中弹出选项卡)时扫描文件并显示
Toast

这是我当前扫描的方式(有上下文):


首先,从可能很快被销毁的
片段下载文件不是一个好主意。您应该使用前台服务


如果您仍然希望使用片段,那么您可以利用应用程序上下文

在开始下载之前,将应用程序上下文的引用作为字段存储在片段中

Context appContext;

// Inside onCreateView
appContext = getContext().getApplicationContext();
然后可以使用应用程序上下文扫描媒体

这不会导致内存泄漏,因为应用程序上下文是单个共享实例,在应用程序被杀死之前不会被销毁

Context appContext;

// Inside onCreateView
appContext = getContext().getApplicationContext();