我需要打开并与服务器保持长期连接以发送消息,接收响应。有时服务器在没有用户请求的情况下发送信息,因此android设备应该监听服务器并做出反应。
有AsyncTasks,我可以实现套接字连接,但主要问题是我只知道一种方式 - 发送请求并收到一次响应。然后关闭AsyncTask(和连接)。
我也读过有关服务(我从未使用过)。
是否可以与保持连接活动的服务器建立长期(1-4小时)连接,侦听用户命令(例如,需要在单击按钮时将数据发送到服务器)并从服务器接收响应或请求(然后更改UI)。 当手机入睡时,服务(和连接)会被杀死,需要更多的记忆或其他吗?这是电池的大成本吗?
也许有其他方法?提前感谢您的所有答案
P.S。抱歉英语能力差,希望你明白:)
答案 0 :(得分:2)
您应该使用在后台运行的Service。
此外,您确实无需通过网络连接保持服务始终处于活动状态。您可以选择支持2-way communication via the XMPP protocol的Google Cloud Messaging。使用此协议,您可以:
这些通知是简短的4kb消息,因此它们更好地用作发布/订阅模型的“命令”,它启动其他网络密集连接,例如上载和下载。其余时间服务可以处于非活动状态以减少资源消耗。
答案 1 :(得分:0)
根据Android API Reference
“服务是一个可以在后台执行长时间运行的应用程序组件”
是的,它消耗电池,你必须自己停止:
“重要的是你的应用程序在完成工作后停止服务,以避免浪费系统资源和消耗电池电量”
所以我认为服务符合您的需求。
答案 2 :(得分:0)
如果您想要将数据发送到服务器时需要与服务器通信,则可以执行此操作并等待应答。如果您需要将数据从服务器发送到设备,请查看push notifications。