我需要打开和保持与服务器的长期连接,以发送消息,接收响应。此外,有时服务器在没有用户请求的情况下发送信息,因此android设备应该监听服务器并做出反应。
有AsyncTasks,在这里我可以实现套接字连接,但主要的问题是我只知道一种方法-发送请求和接收响应一次。然后关闭AsyncTask (和连接)。
我还读过有关服务的文章(我从未使用过)。
是否有可能与服务器建立长期(1-4小时)连接,使连接保持活动,侦听用户命令(例如,单击按钮时需要向服务器发送数据)并接收来自服务器的响应或请求(然后更改UI)。当电话睡着,需要更多的记忆或其他东西时,服务(和连接)会被杀死吗?电池成本高吗?
也许还有别的办法?谢谢您的所有答复。
很抱歉英语能力差,希望你能理解:)
发布于 2013-08-29 07:44:58
您可能应该使用在后台运行的服务。
此外,您真的不需要让服务始终保持与网络连接的活力。您可以选择Google消息传递,它支持通过XMPP协议进行双向通信。使用此协议,您可以:
这些通知是4kb短消息,因此它们更好地用作发布/订阅模型的“命令”,从而启动其他网络连接,如上传和下载。其余的时间,服务可以是不活动的,以减少资源消耗。
发布于 2013-08-29 07:42:46
根据Android参考
“服务是可以在后台执行长时间运行操作的应用程序组件”
是的,它消耗电池,你必须自己停止:“重要的是,当应用程序完成工作时停止它的服务,以避免浪费系统资源和消耗电池电源。”
所以我认为服务符合你的需要。
发布于 2013-08-29 07:43:14
如果要向服务器发送数据时需要与服务器通信,则可以这样做并等待答复。如果需要将数据从服务器发送到设备,请查看推送通知。
https://stackoverflow.com/questions/18504873
复制相似问题