不过,我正在使用 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/