Android服务:绑定还是启动?

pvl*_*spk 20 service android

在什么情况下我应该启动服务以及在什么情况下绑定服务?例如 - 音乐服务的Android客户端?系统的优先级是否存在差异;是否为任何通用规则; 还要别的吗?

Edw*_*alk 20

使用startService()你开始后他们将独立运行的服务.音乐播放器是一个很好的例子.这些运行直到他们打电话stopSelf()或有人打电话stopService().

您可以通过来回发送Intent来与正在运行的服务进行通信,但在大多数情况下,您只需启动该服务并让它自行运行.

bind()当服务和客户端通过持久连接来回通信时使用.一个很好的例子是导航服务,它将位置更新发送回客户端.粘合剂比意图更难写,但它们真的是这个用例的方法.

关于优先级:当进程的所有活动都失去其可见性时,如果该进程托管以启动的服务,则该进程将成为服务进程onStart(),否则它将成为后台进程.服务流程的优先级高于后台流程.在android开发者网站上的更多细节.

如果没有可见活动的服务进程需要更高的优先级(例如,实际上不应该被中断的音乐播放器),则服务可以调用startForeground().

  • 还有一点:没有理由你不能使用`startService()`来启动服务,但也可以绑定它. (4认同)
  • 谷歌开发人员教程提到绑定""...适用于需要将活动绑定到其后台播放音乐的服务的音乐应用程序."然而你说这应该是startService应该用于什么.我正在评论,因为现在我正在努力解决同样的问题:绑定或开始. (2认同)
  • 谷歌开发者教程很糟糕,错过了领先。 (2认同)