我正在创建一个连接到Android上的XMPP服务器的应用程序。我想保持连接,直到用户注销。
我应该使用常规服务还是绑定服务来保持连接?
欢迎任何提示、建议和有用的信息。
发布于 2014-07-14 00:31:39
我喜欢这样的解释:
启动的服务很容易为从活动到服务的简单单向交互进行编程,然而,它们需要更复杂和特别的编程来与其客户端进行扩展的双向对话。
相比之下,对于更复杂的活动和服务之间的双向交互,绑定服务可能是更好的选择。例如,它们支持双向对话。
所以,正如您所说,如果您想与服务交互,请使用服务。对于启动的服务(或意图服务),您可以做到这一点,只是它需要更复杂的编程。( Douglas Schmidt:https://www.youtube.com/watch?v=cRFw7xaZ_Mg (11'10'')):
这是一个帮助我理解的摘要(感谢Doug):

最后,还有一个对我也有帮助的链接:http://www.techotopia.com/index.php/An_Overview_of_Android_Started_and_Bound_Services
Android启动的服务由其他应用程序组件(如activity,甚至是广播接收器)启动,并且可能会在后台无限期运行,直到服务停止,或者被运行时系统销毁以释放资源。如果启动该服务的应用程序不再处于前台,甚至在最初启动该服务的组件被销毁的情况下,该服务将继续运行
绑定的服务类似于启动的服务,只是启动的服务通常不返回结果或允许与启动它的组件进行交互。另一方面,绑定服务允许启动组件与服务交互并从服务接收结果。
发布于 2012-02-14 14:56:20
绑定服务是客户端-服务器接口中的服务器。绑定服务允许组件(如活动)绑定到服务、发送请求、接收响应,甚至执行进程间通信(IPC)。绑定服务通常仅在为另一个应用程序组件提供服务时存在,并且不会无限期地在后台运行。
如果所有代码都存在于从连接到用户注销的用户的一个活动中,则转到绑定服务
但如果代码存在于多个活动中,请尝试使用服务
发布于 2013-02-26 05:30:48
我发现了两者之间的区别,以及何时使用它。如果您希望与服务交互(例如,发送参数等),请使用绑定服务,它将在onServiceConnected方法中返回服务对象(您可以在其中调用服务中的方法)。您不能与常规服务(来自另一个类)交互
https://stackoverflow.com/questions/9272217
复制相似问题