Ping 输入 Android 以检测设备 failing/departure

Ping in Android to detect device failing/departure

我已阅读 this tutorial 有关以电池高效方式进行数据传输的内容。 所有课程都基于一个简单的概念:轮询服务器 Android 是电池效率低下的。因此,引入 Google Cloud Messaging 以便仅在需要时才从服务器向设备发送消息。

只有一个问题:我正在尝试实现一个 "mobile cloud",因此由移动设备组成的云,其中每个设备都可以 join/leave 高频网络。所以我需要一些机制来检测设备何时无法访问。到目前为止,在我看到的关于该主题的所有作品中,唯一的解决方案是定期 ping 主服务器以从移动设备说 "Hey, I'm still alive!"。显然这个解决方案会耗尽电池电量,但直到现在我还没有 seen/found 更好的解决方案。

你知道这个问题的电池高效解决方案吗?

没有理由定期(心跳)对服务器执行 ping 操作必然会浪费 battery/inefficient。这取决于您需要 ping 的频率,以及您的 ping 是需要启动自己的传输还是搭载其他传输。

让我解释一下。电池效率低下取决于您是否增加收发器处于活动状态的频率或持续时间。如果收发器始终处于活动状态,例如它不断交换数据或音频,则心跳不会增加额外的负担。如果它未激活,则会有额外的能量使用,但这取决于您的心跳频率与 ping 导致收发器通电的时间相比。即使那样,它也可能与您的应用程序无关,因为我怀疑 "cloud" 表示设备处于活动状态并已连接。

让我们假设您的心跳会增加收发器处于活动状态的持续时间。您仍然可以使用一些技术来减少这种影响,例如缓存您的节拍并仅在它可以搭载另一个传输时发送它。当然,这样的解决方案取决于你的心跳是在应用程序中实现的,OS还是内核。

建议您实际测试一下,看看是否真的对您的设备有影响。

PS 我并不是说教程有误。它不是。但它正在解决比你所拥有的更广泛和更普遍的问题。