Android 何时在MediaPlayer中启动onCompletion?
我尝试使用以下代码来播放音乐。 我知道如果我不再使用mediaPlayer,我需要尽快发布它,所以我将发布代码放在Android 何时在MediaPlayer中启动onCompletion?,android,Android,我尝试使用以下代码来播放音乐。 我知道如果我不再使用mediaPlayer,我需要尽快发布它,所以我将发布代码放在onCompletion中 1:音乐播放完毕后是否会启动onCompletion 2:在我调用mediaPlayer?.stop()后,是否会启动onCompletion 3:如果调用PlayHelper的活动被销毁,是否会启动onCompletion 代码 class PlayHelper private constructor(): MediaPlayer.OnPrepare
onCompletion
中
1:音乐播放完毕后是否会启动onCompletion
2:在我调用mediaPlayer?.stop()
后,是否会启动onCompletion
3:如果调用PlayHelper
的活动被销毁,是否会启动onCompletion
代码
class PlayHelper private constructor(): MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener {
private var mediaPlayer: MediaPlayer? = null
fun play(path: String){
mediaPlayer= MediaPlayer()
mediaPlayer?.setAudioAttributes(
AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
)
mediaPlayer?.setDataSource(path)
mediaPlayer?.setOnPreparedListener(this@PlayHelper)
mediaPlayer?.prepareAsync()
}
fun pause(){
mediaPlayer?.pause()
}
fun stop(){
mediaPlayer?.stop()
}
/** Called when MediaPlayer is ready */
override fun onPrepared(mediaPlayer: MediaPlayer) {
mediaPlayer.start()
}
override fun onCompletion(mediaPlayer: MediaPlayer) {
if (mediaPlayer.isPlaying) {
mediaPlayer.stop();
mediaPlayer.release()
}
}
companion object {
// For Singleton instantiation
@Volatile private var instance: PlayHelper? = null
fun getInstance() = instance?: synchronized(this) {
instance?: PlayHelper().also { instance = it }
}
}
}
关于,只有在播放过程中到达媒体源的末尾时,才会调用onCompletion。因此,在其他情况下,如调用mediaPlayer.stop()
,它将不会被调用。关于,只有在播放过程中到达媒体源的末尾时,才会调用onCompletion
。因此,在其他情况下,比如调用mediaPlayer.stop()
,它将不会被调用
1:onCompletion会在音乐播放完毕后启动吗
会的
2:在调用mediaPlayer?.stop()后是否会启动onCompletion
不会的
3:如果调用PlayHelper的活动被销毁,是否会启动onCompletion
不会的。当活动被销毁时,PlayHelper将从内存中删除
此链接:来自文档,包含以下行:
在播放过程中到达媒体源结尾时调用
1:onCompletion会在音乐播放完毕后启动吗
会的
2:在调用mediaPlayer?.stop()后是否会启动onCompletion
不会的
3:如果调用PlayHelper的活动被销毁,是否会启动onCompletion
不会的。当活动被销毁时,PlayHelper将从内存中删除
此链接:来自文档,包含以下行:
在播放过程中到达媒体源结尾时调用