为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蓝山帝景 2021-10-27 16:29:50
我正在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.");                }            });}
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

首先,从 a 下载一个Fragment可能很快就会被破坏的文件不是一个好主意。您应该改用前台服务。


如果您仍然想坚持使用片段,在您的情况下,您可以使用应用程序上下文。


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


Context appContext;


// Inside onCreateView

appContext = getContext().getApplicationContext();

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


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


查看完整回答
反对 回复 2021-10-27
  • 1 回答
  • 0 关注
  • 272 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信