电池高效的定期数据提交

Posted

技术标签:

【中文标题】电池高效的定期数据提交【英文标题】:Battery efficient periodical data submission 【发布时间】:2012-10-31 12:31:13 【问题描述】:

我有一个要在手机上运行的网络应用程序,当它打开时会持续生成数据(每几秒或每几分钟生成几千字节,具体取决于设置),并且需要将其实时推送到服务器。从来没有数据从服务器发送到浏览器。

我主要关心的是让这个提交省电,延迟几秒钟是完全可以的。

我设想了两种解决方案:

    定期向服务器发送 POST 数据(以避免需要维护永久连接) 打开websocket并定期发送消息(以避免http请求的重量)

哪一个对电池最有效?我还缺少其他策略吗?


实际上,我的应用程序将托管在 heroku 上,但 does not supports websockets 会导致长时间轮询,因此目前我认为按需发布更好,但我想知道它是否可以作为一个选项未来(或者这个假设可能是错误的)。

【问题讨论】:

【参考方案1】:

安卓

android 设备上,存在三种不同的网络无线电状态as the documentation says:

典型 3G 网络无线电的状态机由三个 能量状态:

    全功率:在连接处于活动状态时使用,允许设备以尽可能高的速率传输数据。

    低电量:一种中间状态,在充满状态下使用大约 50% 的电池电量。

    待机:没有网络连接处于活动或不需要网络连接的最低能量状态。

虽然低电量和空闲状态消耗的电量显着减少,但它们 还会给网络请求带来显着的延迟。返回 从低状态全功率大约需要 1.5 秒,同时移动 从空闲到充满可能需要 2 秒以上。

设备在空闲 5 秒后从 Full 变为 Low,再过 12 秒后从 Low 变为 Standby。

上面的链接还介绍了一些电池友好型连接的最佳实践,尽管它没有具体说明 Websockets。

ios

我在 iOS 设备上找不到这样的特定文档,但型号 seems to apply in a similar way:

蜂窝和 Wi-Fi 无线电设计为在没有信号时关闭 活动。但是,根据收音机的不同,这样做可能需要几个 秒。如果您的应用每隔几秒就会传输少量数据, 无线电可能会保持通电并继续消耗功率,即使 当他们实际上没有做任何事情时。而不是传输小 数据量越多,传输量越大越好 数据一次或相对较大的间隔。

那又怎样?

一般来说,您可能应该使用较短的 POST 请求并尽可能少地发送数据,以便无线电可以在这期间关闭。

【讨论】:

使定期 POST 请求听起来更合乎逻辑,我还将添加一个缓冲设置以限制频率。关于 Android,我不清楚活动的 websocket 是否会阻止进入低功率/待机状态,因为它说“无线电空闲 XX 秒”,但未使用的套接字实际上不会发送数据包。我必须尝试使用​​ DDMS。 根据我使用 websockets 的经验,REST 服务(POST、GET、...)是一个套接字。根据文档,Android 设备会处理和“标记”连接以保持某种形式的连接,即使无线电变得空闲(“GCM 是使用持久 TCP/IP 连接实现的”)

以上是关于电池高效的定期数据提交的主要内容,如果未能解决你的问题,请参考以下文章

每 n 秒检索一次 Android 电池指标 [高效]

IBCHITPERL高效率太阳能电池的发展现状与趋势

PERLHITIBCMWT等如何增效?细述高效晶体硅电池技术!

深度IBCHITPERL高效率太阳能电池的发展现状与趋势

OpenGL-ES 益智游戏 - 使绘图电池高效?

实现结算对账高效协同,SRM系统助力新能源电池企业数字化管理全业务过程