1

我需要打开并保持与服务器的长期连接以发送消息,接收响应。有时服务器在没有用户请求的情况下发送信息,所以安卓设备应该监听服务器并做出反应。

有 AsyncTasks,我可以在其中实现套接字连接,但主要问题是我只知道一种方法 - 发送请求并接收一次响应。然后 AsyncTask (和连接)被关闭。

我还阅读了有关服务(我从未使用过)的信息。

是否可以与保持连接活动的服务器建立长期(1-4 小时)连接,侦听用户命令(例如,单击按钮时需要向服务器发送数据)并接收来自服务器的响应或请求(然后更改用户界面)。当手机入睡时服务(和连接)是否会被终止,需要更多内存或其他?电池成本高吗?

也许还有其他方法?预先感谢您的所有回答

PS抱歉英语不好,希望你理解:)

4

3 回答 3

2

您可能应该使用在后台运行的Service

此外,您确实不需要通过网络连接使服务始终处于活动状态。您可以选择 Google Cloud Messaging,它支持通过 XMPP 协议进行双向通信。使用此协议,您可以:

  1. 从服务器接收通知,启动服务并进行必要的处理。
  2. 向服务器发送通知,服务器在该服务器上执行任何必要的工作。

这些通知是 4kb 的短消息,因此它们更适合用作发布/订阅模型的“命令”,它会启动其他网络繁重的连接,例如上传和下载。其余时间服务可以处于非活动状态以减少资源消耗。

于 2013-08-29T07:44:58.513 回答
0

根据Android API Reference
“A Service 是可以在后台执行长时间运行操作的应用程序组件”

是的,它会消耗电池,您必须自己停止它:“重要的是,您的应用程序在完成工作后停止其服务,以避免浪费系统资源和消耗电池电量”

所以我认为服务符合您的需求。

于 2013-08-29T07:42:46.567 回答
0

如果您在向服务器发送数据时需要与服务器通信,您可以这样做并等待应答。如果您需要将数据从服务器发送到设备,请查看推送通知

于 2013-08-29T07:43:14.443 回答