【发布时间】:2016-05-16 14:22:18
【问题描述】:
我正在尝试创建简单的 Android 应用程序来播放 sd 卡中的音频文件。
我在理解服务方面遇到了一些问题。
我会具体一点,这是我的问题。
- 服务默认在 UI 线程上运行,不是吗?仅当它在单独的进程中运行时,它才有另一个线程和上下文,因为它是系统中的另一个进程(虚拟机实例的分支)
- 应该在哪里使用
MediaPlayer类?在后台服务或 UI 线程中。至于绑定服务在UI线程上运行,如果它在UI线程上运行,创建服务绑定等没有任何意义?仅在我们想在活动(或任何 UI 组件被破坏)时继续在后台播放音乐的情况下,但在这种情况下,即使用户不可见 UI,MusicPlayer 也会占用整个 UI 线程。我说的对吗? - 我发现了大量的教程如何创建简单的音频播放器,其中很少有说明如何直接从服务在单独的线程中运行,其他人只是直接从活动中使用
IBinder类在服务中运行,该类只返回服务实例。
请解释一下这个话题。 如果有任何帮助,我将不胜感激。 谢谢。
【问题讨论】:
-
感谢 cmets 但我已经读过了。
-
首先,不能在ui线程上播放媒体!它应该在 Foreground-Service 中完成(普通服务,通过调用 startForeground() 启动)。 MediaPlayer 应该是您的服务的一部分,最后,我认为您看到的教程还可以。如果你想要的话,我也有一些示例代码(我实际上正在构建我自己的音乐应用程序)!
标签: java android multithreading android-service audio-player android-music-player