我正在创建一个连接到Android上的XMPP服务器的应用程序。我希望保持连接,直到用户退出。
我应该使用常规服务还是绑定服务来保持连接?
欢迎任何提示,建议和有用的信息。
答案 0 :(得分:12)
我喜欢这样的解释:
对于简单的单向交互,启动服务很容易编程 然而,从活动到服务,它们需要更复杂的和 用于扩展双向对话的特殊编程 客户端。
相比之下,绑定服务可能是更好的选择 活动和服务之间复杂的双向互动。对于 例如,他们支持双向对话。
所以,正如你所说,如果你想与服务使用绑定服务进行交互。使用已启动的服务(或意图服务),您可以执行此操作,只需要更复杂的编程。 (作者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运行时系统销毁为了腾出资源。如果启动它的应用程序不再位于前台,即使最初启动该服务的组件被销毁,服务也将继续运行
绑定服务类似于已启动服务,但启动服务通常不会返回结果或允许与启动它的组件进行交互。另一方面,绑定服务允许启动组件与服务交互并从服务接收结果。
答案 1 :(得分:4)
绑定服务是客户端 - 服务器接口中的服务器。绑定服务允许组件(例如活动)绑定到服务,发送请求,接收响应,甚至执行进程间通信(IPC)。绑定服务通常仅在其服务于另一个应用程序组件时才存在,并且不会无限期地在后台运行。
如果连接到用户注销的用户的一个活动中存在所有代码,则转到绑定服务
但如果代码存在于多个活动中,请尝试使用服务
答案 2 :(得分:1)
我发现了两者之间的区别以及何时使用它。如果要与服务交互(例如发送参数等),请使用绑定服务,并在onServiceConnected方法中返回服务对象(您可以在其中调用服务中的方法)。您无法与常规服务(来自其他类)进行交互