在我的应用程序中,服务在应用程序开始时启动,并且在应用程序关闭之前不会停止(我使用START_STICKY)。目前,我有不同的组件需要与服务绑定和解除绑定进行通信。我现在的想法是,当我可以简单地让Intents与服务进行通信时,为什么要费心绑定和取消绑定。
让我的组件向服务发送意图更好的想法然后绑定,如果服务将持续增加?我认为好处是不太复杂的代码,因为组件将简单地创建Intent并调用启动服务
答案 0 :(得分:1)
正如其他人在评论中所指出的那样,这完全取决于您和您的需求。使用绑定器方法,您可以更直接地与服务建立连接,从而使您可以进行直接调用(实际上,如果您处于同一个过程中)。使用Intent
进行通信意味着您的通信机制更基于消息,您必须处理不同的Intent
有效负载。它还会产生一些额外的开销,因为调用startService()
或startActivity()
或sendBroadcast()
都会最终导致系统服务器中运行的ActivityManagerService
。另一种方法是使用Intent
设置Service
和Activity
之间的连接,并使用Messenger
来回发送消息。它类似于纯Intent
机制,但是一旦Messenger
对象被交换,ActivityManagerService
就不再有参与。
答案 1 :(得分:0)
是将数据发送到intent中的服务并在onStartCommand或OnBind中处理intent是非常简单的方法。问题是服务如何与活动片段进行通信。
Messenger服务有一个优点,它可以将每个传出消息的副本发送给绑定到该服务的所有客户端,并且您可以传递与Intent中相同的数据包。
http://developer.android.com/guide/components/bound-services.html#Messenger
可以修改上面的示例,以便使用消息来回发送数据包。