gpt4 book ai didi

java - 在 fragment 中使用 MediaScannerConnection.scanFile()?

转载 作者:行者123 更新时间:2023-11-29 23:31:14 28 4
gpt4 key购买 nike

我正在从 Fragment 中异步下载文件,并希望在下载完成时调用 MediaScannerConnection.scanFile()。如果我坐下来等待下载完成而不离开我的 Fragment(或其托管 Activity ),我就能得到想要的结果。我面临的问题是 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.");
}
});
}

最佳答案

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


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

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

Context appContext;

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

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

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

关于java - 在 fragment 中使用 MediaScannerConnection.scanFile()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52637145/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com