我正在从setupterm
异步下载文件,并希望在下载完成后调用Fragment
。如果我坐下来等待下载完成,而无需离开我的Fragment(或其托管活动),我将能够获得预期的结果。我面临的问题是MediaScannerConnection.scanFile()
需要上下文,而我不想限制用户停留在MediaScannerConnection.scanFile()
/ Fragment
内,只是上下文不为空。
如何在后台使用Activity
,以便我可以扫描文件并在扫描完成后显示MediaScannerConnection.scanFile()
,同时仍在我的应用程序的其他部分中导航(甚至使用Tab键)从我的应用程序中删除)?
这是我当前使用上下文扫描的方式:
Toast
答案 0 :(得分:1)
首先,从Fragment
下载可能很快被销毁的文件不是一个好主意。您应该使用前台服务。
如果您仍然希望保留片段,可以使用应用程序上下文。
开始下载之前,请将应用程序上下文的引用作为字段存储在片段中。
Context appContext;
// Inside onCreateView
appContext = getContext().getApplicationContext();
然后,您可以使用应用程序上下文来扫描媒体。
这不会导致内存泄漏,因为应用程序上下文是单个共享实例,并且在应用程序被杀死之前不会被破坏。