android - 为什么我偶尔会在 logcat 中看到 "MediaPlayer finalized without being released",即使我没有在任何地方使用 MediaPlayer?

标签 android android-mediaplayer android-logcat ringtone

不过,我正在使用 RingtoneManager 来获取 Ringtone


此信息已包含在 this question and answer 中,但 Google 员工不太可能找到它,除非他们已经知道要搜索什么(至少我不知道)。

最佳答案

这是因为 RingtoneManager.getRingtone() 在返回的 Ringtone 对象上内部调用了 open()Ringtone.open() 设置了一个MediaPlayer,这个MediaPlayer 不会被释放,除非你手动调用Ringtone.stop() 。请注意,您无需实际播放铃声即可实现这一点。这似乎没有在任何地方记录。

我不知道忽略释放 MediaPlayer(documentation 提供了最坏的情况)但手动调用 stop() 在你的 Ringtone 上,然后再让它们被 GC 处理至少会消除警告。

关于android - 为什么我偶尔会在 logcat 中看到 "MediaPlayer finalized without being released",即使我没有在任何地方使用 MediaPlayer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23749914/

相关文章:

android - 找不到处理 Intent 的 Activity (导致 FC)

android - 谷歌云消息安全

Android - 图形又大又模糊

java - android studio中有 "java.io.IOException"问题的解决方案吗?

android - 通过搜索栏从服务到 Activity 的进度

android - 播放特定的通知声音

android - Logcat : Not granting permission android. 权限.BIND_DEVICE_ADMIN 打包 com.myprojects.myapp (protectionLevel=2 flags=0xbe46)

android - API 26 (Android 8.0 Oreo) 弃用了 IntentService + WakefulBroadcastReceiver + AlarmManager。哪个是最好的选择?

android - 在 Android 上以编程方式获取 MPEG-4 视频流的配置文件

android - 如何在 Android Studio 中每次运行之前自动清除 logcat 输出?