gpt4 book ai didi

android - MediaScannerConnection 产生 android.app.ServiceConnectionLeaked

转载 作者:IT老高 更新时间:2023-10-28 21:55:44 26 4
gpt4 key购买 nike

我正在使用 API Demos 中的 MediaScannerConnection 示例代码

我使用的 fragment 是:

MediaScannerConnection.scanFile(
context,
new String[] { permFile.getAbsolutePath() },
null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {

android.util.Log.i("ExternalStorage", "Scanned " + path + ":");
android.util.Log.i("ExternalStorage", "-> uri=" + uri);
}
});

当我运行此代码时,我会从 LogCat 获得一个 FC 对话框,其中包含以下内容:

4-20 23:17:45.988: ERROR/ActivityThread(3015): Activity com.my.package.name has leaked ServiceConnection android.media.MediaScannerConnection@40715c70 that was originally bound here
04-20 23:17:45.988: ERROR/ActivityThread(3015): android.app.ServiceConnectionLeaked: Activity com.my.package.name has leaked ServiceConnection android.media.MediaScannerConnection@40715c70 that was originally bound here

我做错了什么?

仅供引用,我正在使用 AsyncTask 从后台线程运行它。

最佳答案

我在使用 Environment.getExternalStoragePublicDirectory 文档中提供的代码 fragment 时注意到了相同类型的错误消息。 .

代码按预期正常工作,并在设备库中显示新文件,但同时打印有关泄露的ServiceConnection的错误。

查看 MediaScannerConnection 的内部 Android 代码,似乎存在某种机制来在最后一个文件之后停止服务。也许只给一个​​文件就行不通?

通过 Intent 通知 MediaScanner,我最终使用了完全不同的解决方案。这也可以正常工作,并且不会产生任何警告:

Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri fileContentUri = Uri.fromFile(permFile); // With 'permFile' being the File object
mediaScannerIntent.setData(fileContentUri);
this.sendBroadcast(mediaScannerIntent); // With 'this' being the context, e.g. the activity

看来这是首选方式,Android Training about Taking Photos 中有提到也是。

关于android - MediaScannerConnection 产生 android.app.ServiceConnectionLeaked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739140/

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