58

这可能是一个愚蠢的问题,但我想知道什么时候使用它很聪明,bindService什么时候使用startService.

例如:

如果我使用bindServicewith BIND_AUTO_CREATE,服务将自动启动和创建,如下所示:http: //developer.android.com/reference/android/content/Context.html#BIND_AUTO_CREATE

那么什么时候使用它是聪明的bindService,什么时候使用startService呢?我真的没有正确理解这两个。

4

2 回答 2

97

bindService()如果您的调用组件(Activity)需要Service通过ServiceConnection. 如果您不想与您通信,Service您可以使用 just startService()。您可以在下面看到服务和绑定服务之间的差异。

从文档:

开始

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

边界

当应用程序组件通过调用 bindService() 绑定到服务时,服务被“绑定”。绑定服务提供了一个客户端-服务器接口,允许组件与服务交互、发送请求、获取结果,甚至通过进程间通信 (IPC) 跨进程执行此操作。绑定服务仅在另一个应用程序组件绑定到它时运行。多个组件可以一次绑定到服务,但是当所有组件都解除绑定时,服务将被销毁。

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

于 2012-12-09T13:15:39.053 回答
26

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

因此,如果您想在应用程序处于后台时在后台运行服务(例如,活动已暂停并且用户不可见),那么您必须启动服务而不绑定它并与之通信,BroadcastReceiver例如.

于 2014-07-28T08:54:48.230 回答