与服务交互

时间:2014-12-03 20:33:11

标签: android android-intent service

在我的应用程序中,服务在应用程序开始时启动,并且在应用程序关闭之前不会停止(我使用START_STICKY)。目前,我有不同的组件需要与服务绑定和解除绑定进行通信。我现在的想法是,当我可以简单地让Intents与服务进行通信时,为什么要费心绑定和取消绑定。

让我的组件向服务发送意图更好的想法然后绑定,如果服务将持续增加?我认为好处是不太复杂的代码,因为组件将简单地创建Intent并调用启动服务

2 个答案:

答案 0 :(得分:1)

正如其他人在评论中所指出的那样,这完全取决于您和您的需求。使用绑定器方法,您可以更直接地与服务建立连接,从而使您可以进行直接调用(实际上,如果您处于同一个过程中)。使用Intent进行通信意味着您的通信机制更基于消息,您必须处理不同的Intent有效负载。它还会产生一些额外的开销,因为调用startService()startActivity()sendBroadcast()都会最终导致系统服务器中运行的ActivityManagerService。另一种方法是使用Intent设置ServiceActivity之间的连接,并使用Messenger来回发送消息。它类似于纯Intent机制,但是一旦Messenger对象被交换,ActivityManagerService就不再有参与。

答案 1 :(得分:0)

是将数据发送到intent中的服务并在onStartCommand或OnBind中处理intent是非常简单的方法。问题是服务如何与活动片段进行通信。

Messenger服务有一个优点,它可以将每个传出消息的副本发送给绑定到该服务的所有客户端,并且您可以传递与Intent中相同的数据包。

http://developer.android.com/guide/components/bound-services.html#Messenger

可以修改上面的示例,以便使用消息来回发送数据包。