gpt4 book ai didi

android - 实现 Android 通知应用程序的最省电方式

转载 作者:行者123 更新时间:2023-11-29 00:29:08 27 4
gpt4 key购买 nike

我正在开发一个 Android 通知应用程序,它在 MQTT 消息中获取 XML 数据以构建通知,但还包含在单击通知时执行 Intent 的数据。我通过使用 Polling/Pull 消息传递实现了推送消息传递,因为我认为等待消息到达并对其执行某些操作比轮询 Web 服务器以获取可能没有任何新数据的更新和解析结果更有效。

但是,Android 的默认省电方案会在屏幕关闭时关闭 Wi-Fi 以节省电量,这意味着我与 MQTT 服务器的连接断开了。当我重新打开屏幕时,我的服务器连接重新建立并且 MQTT 服务器上的最后一条消息被传送。

所以现在我面临一个选择。在我的服务代码中实现 wi-fi 锁定,或使用警报管理器定期唤醒我的服务,检查 MQTT 发布,然后退出。

wifi wakelock vs. alarm manager建议 wifilocks 非常低效,我应该使用警报管理器。如果是这样的话,我就失去了推送通知的“即时交付”优势,我正在有效地轮询数据。Google 的云消息/WhatsApp/Viber 等应用如何在允许设备休眠的同时通过保持 Wi-Fi 处于 Activity 状态而不耗尽电池电量来进行即时消息传递?

最佳答案

由于 MQTT 适合使用移动网络,除非您在只有 wifi 的设备上,您只需要使用 WakeLock 来阻止 CPU 休眠,以便您可以与 MQTT 服务器通信。如果与服务器的连接丢失,您可以编写服务以尝试重新连接。

但是,在仅支持 wifi 的设备上,您需要使用 WifiLock 才能继续连接到 MQTT 服务器。关于电池生命周期,您需要进行一些测试,以了解对仅支持 wifi 的设备的电池生命周期的影响。

关于android - 实现 Android 通知应用程序的最省电方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17143661/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com