【发布时间】:2016-02-07 04:21:37
【问题描述】:
我正在尝试深入研究服务架构。
仅出于测试目的,我正在创建音乐应用程序。
毫无疑问,音乐应该在服务中播放,但使用什么样的沟通方式?
据我所知,服务可以绑定或启动(或两者同时)
首先,我需要播放/停止/暂停/设置源...
其次,如果音乐播放器打开了事件,我需要通知 UI比如进度、缓冲……
这是我对此的看法。
我考虑混合绑定和启动服务。
就歌曲只能从 UI 设置以及暂停/播放/停止/搜索而言,我选择使用活页夹从 UI 与服务通信。 (在活动中绑定服务并让绑定器返回与服务通信)
来自服务的通知,如曲目完成、下一曲目、当前曲目位置。我决定使用Broadcast receiver 发送此类通知,因为它可以是多个感兴趣的组件。
所以我的问题是
- 音乐播放器服务的最佳通信方式(绑定或广播)是什么?
- 系统如何知道服务是什么?我的意思是,即使服务是
bound,我也需要先调用startService方法,然后再绑定它。这是否意味着即使调用了一个bindService方法,它也被视为绑定服务,并且在调用unbind方法时会被杀死? -
LocalBroadcastManager与服务通信有意义吗?至于LocalBroadcastManager对于每个应用程序都是本地的,为什么不使用绑定服务呢?如果其他应用对事件感兴趣,全球广播很有意义。
请帮助理解这个机制。
【问题讨论】:
-
你完成音乐应用了吗?如果是,您是如何管理音乐的(播放、暂停、停止...)?通过服务、意向服务或其他方式?我在你的起点;)
标签: android android-intent android-service android-broadcastreceiver