如何在Kotlin中实现MediaPlayer.OnPreparedListener?
Kotlin中实现MediaPlayer.OnPreparedListener的几种方式
在Kotlin里实现MediaPlayer.OnPreparedListener有几种简洁的写法,以下是具体示例:
1. 匿名内部类实现
和Java的写法类似,但Kotlin语法更紧凑:
val mediaPlayer = MediaPlayer() mediaPlayer.setOnPreparedListener(object : MediaPlayer.OnPreparedListener { override fun onPrepared(mp: MediaPlayer?) { // 播放器准备完成后执行逻辑,比如启动播放 mp?.start() } })
2. SAM转换简化(Lambda写法)
因为OnPreparedListener是单抽象方法接口,Kotlin支持直接用Lambda表达式替代,大幅简化代码:
val mediaPlayer = MediaPlayer() // 带参数名的写法 mediaPlayer.setOnPreparedListener { mp -> mp?.start() } // 省略参数名,用默认的`it`指代 mediaPlayer.setOnPreparedListener { it?.start() }
3. 自定义类实现接口(适合复杂逻辑复用)
如果准备完成后的逻辑比较复杂,或者需要在多个地方复用,可以单独定义类实现接口:
class CustomPreparedListener : MediaPlayer.OnPreparedListener { override fun onPrepared(mp: MediaPlayer?) { mp?.start() // 这里可以添加更多自定义逻辑,比如日志、状态回调等 } } // 使用时直接实例化传入 val mediaPlayer = MediaPlayer() mediaPlayer.setOnPreparedListener(CustomPreparedListener())
额外注意
使用MediaPlayer时要记得管理生命周期,避免内存泄漏,比如在页面销毁时释放资源:
override fun onDestroy() { super.onDestroy() mediaPlayer?.release() }
内容的提问来源于stack exchange,提问作者Demo Nomp
相关产品推荐
相关产品推荐

