在什么情况下应该启动Service,什么情况下应该绑定Service?例如 - 用于音乐服务的Android客户端?系统优先级是否有任何差异;是否有任何通用规则;还有其他什么要注意的吗?
对于那些在启动后将独立运行的服务,如音乐播放器等,应使用startService()
。 这些服务会一直运行,直到它们调用stopSelf()
或有人调用stopService()
。
您可以通过发送意图来与运行中的服务进行通信,但大多数情况下,您只需启动该服务并让其自行运行。
当服务和客户端将通过持久连接进行来回通信时,请使用bind()
。一个很好的例子是导航服务,它将向客户端传输位置更新。 与意图相比,绑定程序更难编写,但对于此用例确实是正确的选择方式。
关于优先级:当进程的所有活动失去可见性时,如果它承载了使用onStart()
启动的服务,则该进程将成为“服务进程”,否则它将成为“后台进程”。 服务进程的优先级高于后台进程。更多详细信息请参见Android开发者网站。
如果没有可见活动的服务进程需要更高的优先级(例如真的不应被打断的音乐播放器),则该服务可以调用startForeground()
。
"...非常适合音乐应用程序,需要将活动绑定到在后台播放音乐的服务。"
但是你认为这正是应该使用startService的情况。我评论是因为我现在也在犯同样的困惑:是绑定还是启动服务。 - Katedral PillonstartService()
启动一个服务,并且同时绑定它。但不要忘记,这并不是必须的。 - Edward Falk