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

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

例如:

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

什么时候能够使用bindServicestartService ? 我真的不明白这两个正确的。

Solutions Collecting From Web of "什么时候聪明的使用bindService和startService"

如果您的调用组件( Activity )需要通过ServiceConnection与您正在启动的Service进行通信,则通常使用bindService() 。 如果您不想与Service进行通信,则可以使用startService() 。 您可以在服务和绑定服务之间看到下面的区别。

从文档:

入门

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

当一个应用程序组件通过调用bindService()绑定到一个服务时,这个服务是“绑定”的。 绑定服务提供了一个客户端 – 服务器接口,允许组件与服务进行交互,发送请求, 获得结果 ,甚至跨进程使用进程间通信(IPC)。 一个绑定的服务只在另一个应用程序组件绑定的时候运行。 多个组件可以立即绑定到该服务,但是当它们全部解除绑定时,该服务将被销毁。

您可以在这里阅读更多: Android服务 , 绑定服务

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

所以,如果你想在后台运行你的服务,而应用程序在后台运行(例如活动暂停,用户不可见),那么你必须启动服务,而不必绑定它,并与BroadcastReceiver例。