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();