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

时间:2018-10-03 23:57:58

标签: java android android-asynctask android-file android-mediascanner

我正在从setupterm异步下载文件,并希望在下载完成后调用Fragment。如果我坐下来等待下载完成,而无需离开我的Fragment(或其托管活动),我将能够获得预期的结果。我面临的问题是MediaScannerConnection.scanFile()需要上下文,而我不想限制用户停留在MediaScannerConnection.scanFile() / Fragment内,只是上下文不为空。

如何在后台使用Activity,以便我可以扫描文件并在扫描完成后显示MediaScannerConnection.scanFile(),同时仍在我的应用程序的其他部分中导航(甚至使用Tab键)从我的应用程序中删除)?

这是我当前使用上下文扫描的方式:

Toast

1 个答案:

答案 0 :(得分:1)

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


如果您仍然希望保留片段,可以使用应用程序上下文。

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

Context appContext;

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

然后,您可以使用应用程序上下文来扫描媒体。

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