什么时候使用bindService和startService时很聪明

sen*_*ale 50 android

这可能是一个愚蠢的问题,但我想知道何时使用bindService和何时使用startService.

例如:

如果我用bindService用BIND_AUTO_CREATE,该服务将启动,并为这里写的自动创建:http://developer.android.com/reference/android/content/Context.html#BIND_AUTO_CREATE

什么时候智能,然后使用bindService什么时候startService?我真的不明白这两个.

Ovi*_*tcu 75

bindService()如果您的调用组件(Activity)需要与Service您正在启动的组件进行通信,通常会使用ServiceConnection.如果你不想与Service你沟通,你可以使用startService().您可以在服务和绑定服务之间看到以下差异.

来自文档:

入门

当应用程序组件(例如活动)通过调用startService()启动它时,服务"启动".一旦启动,服务可以无限期地在后台运行,即使启动它的组件被销毁.通常,已启动的服务执行单个操作,并且不会将结果返回给调用者.例如,它可能通过网络下载或上载文件.操作完成后,服务应自行停止.

界

当应用程序组件通过调用bindService()绑定到它时,服务被"绑定".绑定服务提供客户端 - 服务器接口,允许组件与服务交互,发送请求,获取结果,甚至跨进程间通信(IPC)进行交互.只要绑定了另一个应用程序组件,绑定服务就会运行.多个组件可以立即绑定到服务,但是当所有组件解除绑定时,服务将被销毁.

您可以在此处阅读更多内容:Android服务,绑定服务


ben*_*huk 22

我同意@Ovidiu Latcu但有一个重要的注意事项:当使用绑定服务时,服务在启动它的活动结束时结束(如果它是绑定到该服务的唯一活动).

因此,如果您希望在应用程序处于后台时在后台运行您的服务(例如,活动暂停并且用户不可见),那么您必须启动服务而不受其限制并与之通信,BroadcastReceiver例如.

  • 您也可以启动服务并稍后绑定到它 - 这样它将保持运行直到调用停止。 (3认同)