2016-11-29 62 views
0

我有一个应用程序在屏幕上播放显示歌词的歌曲。通过示例了解Android服务

两种情况:

  1. 当歌曲是从本地的mp3文件加载。
  2. 当歌曲是从远程位置通过互联网

我的理解装载的是Android的服务来当歌曲是从远程位置通过互联网传输到抢救。由于涉及的I/O开销,Android服务可以帮助您。在第一种情况下,歌曲从当地位置播放,服务可能是一种矫枉过正。我可以简单地播放加载它的音乐并使用MediaPlayer API播放它。

这种理解是否正确?我错过了什么?

更新:歌曲大小超过10MB。因此,当您通过手机通过慢速互联网进行流式传输时,可能会有一些缓冲区以及更好的用户体验。

在此先感谢。

+1

“这个理解是否正确?” - 不是真的。 “服务可能是一种矫枉过正” - 对于同一首歌曲,两种情况下的I/O数量大致相同。无论您在此情况下使用服务,都会根据用户在音乐播放过程中离开您的用户界面时想要发生的情况而定。 – CommonsWare

+0

@CommonsWare我用文件大小和互联网连接速度作为用例更新了问题。我可以安全地假设,本地播放的文件比需要通过互联网传输的文件要快。 I/O不是真的一样。在通过互联网传输内容时,有几个因素需要考虑? – karthiks

+0

“I/O不完全相同” - 无论歌曲是存储在本地还是流式传输,三分钟的歌曲都需要三分钟。如果歌曲存储在本地,则带宽使用量会减少很多。如果歌曲存储在本地,我猜会有少量的CPU使用率。如果歌曲存储在本地,将会减少电池使用量。无论服务是否相关,都不重要。 – CommonsWare

回答

3

对于不同的使用情况,有不同的Services。对于Media Player,取决于您是否想要在后台或前台连续播放回放。

所以这两种情况都适用于Media Player Service。但Android Developer Guide Media Player Service盖过我的回答

使用服务与MediaPlayer的
如果你希望你的媒体在后台播放,即使你的应用不是屏幕上,也就是说,你希望它继续播放,同时用户与其他应用程序进行交互 - 那么您必须启动服务并从那里控制MediaPlayer实例。您应该小心此设置,因为用户和系统对运行后台服务的应用程序应该如何与系统其余部分进行交互有所期望。如果您的应用程序不能满足这些期望,用户可能会遇到不好的体验。本节介绍您应该注意的主要问题,并提供有关如何处理它们的建议

你的第二个案例更是一个关于网络,在这种情况下,你可以使用IntentService下载.mp3和通问题它到MediaPlayer

+0

在我的Android OnePlus One手机中,我可以启动应用程序并让它播放歌曲(代码已实施,无需服务)。然后我打开一个播放自己的背景音乐的游戏应用程序。有趣的是,我听到了我之前玩过的歌曲以及游戏的音乐。这是怎么发生的?这个事件促使我问这个问题,改变了我的假设。感谢您的帮助。 – karthiks