首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onCompletion什么时候在MediaPlayer上发布?

onCompletion什么时候在MediaPlayer上发布?
EN

Stack Overflow用户
提问于 2020-10-11 02:15:56
回答 2查看 73关注 0票数 1

我尝试使用下面的代码来播放音乐。我知道如果不再使用mediaPlayer,我需要尽快发布它,所以我将发布代码放在onCompletion中。

1:onCompletion会在音乐播放完毕后推出吗?

2:onCompletion会在我调用mediaPlayer?.stop()之后启动吗?

3:如果调用onCompletion的活动被破坏,会不会启动PlayHelper

代码语言:javascript
复制
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 }
        }
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-11 07:01:59

对于正式文件,只有在回放过程中到达媒体源的末尾时才调用onCompletion。因此,在其他情况下,比如调用mediaPlayer.stop(),就不会调用它。

票数 4
EN

Stack Overflow用户

发布于 2020-10-23 22:20:36

1: onCompletion会在音乐播放完毕后推出吗?

它会的。

2: onCompletion会在我调用mediaPlayer?.stop()之后启动吗?

不会的。

3:如果调用onCompletion的活动被破坏,会不会启动PlayHelper?

不会的。当活动被销毁时,PlayHelper将从内存中删除。

这个链接:来自文档的onCompletionListener包含以下行:

当重放期间到达媒体源的结束时调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64300042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档