Android:媒体播放器 PrepareAsync() 和 Prepare() 之间的区别

标签 android android-mediaplayer

我想实现基本的媒体播放器功能,但对 PrepareAsync() 感到困惑 和 Prepare() 方法调用。如果音频文件在 raw 文件夹中,应该使用哪一个。

最佳答案

这些方法之间的区别基本上在于它们执行的线程。

Prepare 在您调用它的线程(最常见的 UI 线程)中运行,因此如果它花费很长时间(缓冲来自 Internet 的视频等),它将阻塞您的 UI 线程,用户可能收到 ANR。

PrepareAsync 在后台线程中运行,因此 UI 线程不会被阻塞,因为它几乎立即返回。但是播放器还没有准备好,因此您需要设置 onPreparedListener 以便知道 MediaPlayer 何时可以使用。

关于Android:媒体播放器 PrepareAsync() 和 Prepare() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25446420/

相关文章:

Android MediaPlayer getCurrentPosition 返回 0

android - 绑定(bind)到android中的同一个服务实例

android - 如何在 Android 中自动播放/停止默认声音?

java - Vogella Android 教程,Android Studio 中的编译器错误

android对话框透明

Android Studio gradle 同步失败 : no cached version

Android 媒体播放器在屏幕旋转时重新初始化

android.support.design.widget.TabLayout 不显示选项卡

android - 在 ListView 中动态添加 View (在本例中为线性布局)时出现图形错误

安卓 : How to listen MediaPlayer event like music play/stop?