Android C2DM 如何提高带宽使用率?

Posted

技术标签:

【中文标题】Android C2DM 如何提高带宽使用率?【英文标题】:How does Android C2DM improve bandwidth useage? 【发布时间】:2012-07-17 16:23:40 【问题描述】:

我一直在读到,使用 android C2DM 是跟踪更新的最有效的解决方案,就带宽而言。但是,我完全错过了 C2DM 是如何更高效的,即每 5 分钟轮询一次的解决方案。

我的理解是: C2DM 通过维护持久的 TCP/IP 连接来工作。 保持所述连接意味着保持收音机打开(我认为这是我错的地方?) http://developer.android.com/training/efficient-downloads/efficient-network-access.html

那么保持 TCP/IP 连接打开不会让无线电始终保持开启状态,即使它处于低功耗模式?

虽然每 5 分钟轮询一次,但延迟的宽度是收音机打开/关闭,下载 3 秒,让收音机在高功率模式下保持 5 秒,在低功率模式下保持 12 秒(延迟关闭) .

感谢您帮助解决这个问题。

【问题讨论】:

请记住,许多用户的设备已经连接到 C2DM 以提供 gmail 等服务,因此对于那些用户,您无需在应用程序中使用 C2DM 就可以使用更多电池。如果您创建自己的投票服务,许多用户将同时使用 C2DM 和您的投票服务。 保持 C2DM 开启不意味着无线电保持开启,因此我的轮询不会使用更多带宽吗?虽然我明白你关于启动新服务会消耗电池电量的观点,但再加上 Android 可以随时终止我的服务这一事实。 等等,当我指的是电池电量时,我一直在愚蠢地使用带宽。 1) 保持连接是否使用任何数据和 2) 在尚未运行 C2DM 同步的设备中是否更省电? 【参考方案1】:

服务器不会轮询使用 bw 和数据的更改,而是会在发生更改时通知您,以便您可以检索更改。

【讨论】:

哦,我明白了。这不是我想要的,但它回答了我的问题。我的问题是我没有完全表达我的问题。我可以理解使用 C2DM 如何节省带宽——您可以在没有新数据时进行轮询。不过,我应该问的是,使用 C2DM 而非轮询是否可以节省电池寿命?

以上是关于Android C2DM 如何提高带宽使用率?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 c2dm 通知将 Android 从睡眠中唤醒并开始活动?

C2DM 的可靠性

com.google.android.c2dm.intent.RECEIVE 还在使用吗?

如何向 C2DM(Android 推送服务)发送批量请求?

Android - C2DM.jar 文件丢失

c2dm android推送通知每天广播量