我已经尝试了几个方法,包括使用asmack的XMPP、paho或IBM MQTT客户端的Mosquitto以及alarmtimer的HTTP,但都没有使用外部库或GCM来实现“推送”。
最终,我使用了Deacon和Meteord,但由于服务器端存在很高的CPU和内存负载,因此我正在尝试建立一个长轮询连接。
我知道它需要一个心跳,并且最后我考虑了延迟(300秒的心跳是否足够?)和适当的方式。
从服务器到客户端发送一个字节大小的心跳(例如每300秒一次),并在客户端设置300秒的套接字超时时间,还是从客户端发送心跳更好(例如,客户端向服务器发送心跳)?哪种方式对电池使用等方面更好?
目前我正在使用一个服务,在onCreate中注册观察者,在onDestroy中注销观察者。 观察者观察一个对象,在一个线程中建立TCP套接字连接,并在断开连接(套接字超时)后重试。
我还用广播接收器检查网络连接是否更改,并在需要时重新连接。
当设备进入待机状态时会发生什么?我真的需要一个alarmmanager或timertask来接收或发送数据包吗? 设备进入待机模式后会断开连接吗?
目前,我尝试使用120秒的延迟从服务器到客户端发送心跳,即使设备的显示关闭了,仍然可以发送心跳。
但是,至少看起来电池耗电情况并不“可接受”。
那么,什么是最好的方法呢?
感谢您的帮助。