使用 MediaPlayer 类一段时间后音乐停止播放

问题描述 投票:0回答:1

我正在使用以下方法在 Android 应用程序中单击按钮来播放音乐。

val mediaPlayer = MediaPlayer.create(this, R.raw.game_jump) mediaPlayer.start()

最初通过单击按钮播放音乐,但单击按钮几次后,音乐停止播放。

我尝试解决,但找不到解决方案,请告诉我如何解决这个问题。

java android kotlin android-music-player android-developer-api
1个回答
0
投票

当创建MediaPlayer类的实例时,系统会分配资源(包括内存)来加载和播放媒体文件。如果没有正确释放这些资源,可能会导致内存消耗过高、内存泄漏,甚至导致应用程序因资源耗尽而崩溃等问题。

要解决此问题,您应该在使用完 MediaPlayer 实例后通过调用 release() 方法来释放它的资源。

val mediaPlayer = MediaPlayer.create(this, R.raw.sound)
mediaPlayer.start()

mediaPlayer.setOnCompletionListener {
    mediaPlayer.release()
}

但是使用 MediaPlayer 类来播放较短的音轨(例如 在您的情况下,在单击按钮时播放声音)不推荐,因为 它可能会消耗更多的内存和处理资源。很合适 适用于需要播放较长音频文件的场景,例如音乐 曲目或更长的音效。

对于较短的音轨,您可以使用 SoundPool。 SoundPool 类专为高效播放短音效而设计,例如在游戏或交互式应用程序中。使用方法如下:

val mySoundPool = SoundPool(1, AudioManager.STREAM_MUSIC, 0)
val soundId = mySoundPool.load(this, R.raw.sound, 1)

mySoundPool.setOnLoadCompleteListener { soundPool, _, _ ->
   soundPool.play(soundId, 1f, 1f, 1, 0, 1f)
}
© www.soinside.com 2019 - 2024. All rights reserved.