从正在运行的服务请求数据的最佳方法是什么?

时间:2011-07-19 13:39:16

标签: android service

我正在开发基于此示例的媒体播放应用:How to design activity-service interaction for a simple mp3 player?

它工作正常,但我不确定如何按需从服务请求数据。具体来说,我想用歌曲的位置更新进度条,以便服务应该能够将该信息提供给客户端活动。更新应该每秒发生一次。

由于它仅在需要时(即仅在活动可见时),广播可能不是解决方案。

因此,据我所知,到目前为止,我可以使用Messenger,也可以绑定服务。

在给定情况下最合适的是什么,即。更新频率为1秒?

增加:

据我所知,该服务将在活动结束时停止。这当然不是我想要的音乐播放器。因此,我尝试使用startService()绑定服务并使用intent发送命令。这似乎工作正常,但这是一种明智的方法吗?我这样做的原因是,当startService启动活动停止后,服务将继续生效。

1 个答案:

答案 0 :(得分:0)

如果您正在寻找实施音乐播放器的一些指导原则,最好的方法是检查Android的默认Music Player来源。

对于您的问题,我认为正确的方法是将您的活动绑定到服务并保持对服务的引用。而不是简单地在您的活动中启动计时器,并每秒向服务询问当前进度。

<强>加成: 再次检查源代码。您会注意到,当所有活动都与服务解除绑定时,会检查是否有某些内容可以播放。如果有什么东西要播放,则服务停止并继续播放,否则服务停止(释放资源并等待再次需要的时间)。要查看在现实生活中实现的上述内容,请检查MusicPlaybackService的方法onUnbind()。