最近谷歌推出了Push-to-Device服务,但只适用于Android 2.2及以上版本。
我需要在我的应用程序中实现类似的系统,并试图绕过限制。
问题在于电池寿命。由于用户必须立即收到有关服务器更改的通知,因此我想实现一个可以在后台运行的服务(标准Android服务),并查询更新。
当然,即使每秒查询一次服务器,也会消耗大量带宽和电池,因此我的问题是:如果服务器保持响应一段时间,是否会有所不同? (Comet类型的ajax请求背后的思想)
工作原理如下:
- 设备发送数据更新请求
- 服务器收到请求并进入循环,每次迭代都检查是否有更新
- 如果有更新,则服务器发送带有更新的响应
- 如果没有,则服务继续进行下一次迭代。
- 一分钟后,它最终发送表明尚未有可用数据的响应
- 响应后(无论是空的还是有数据的),Android都会再次发出这样的请求。
这肯定会减少带宽成本,但它会消耗更少的电池(甚至更多)吗?