【发布时间】:2013-06-17 08:49:50
【问题描述】:
我正在开发一个 Android 通知应用程序,它在 MQTT 消息中获取 XML 数据以构建通知,但还包含在单击通知时执行 Intent 的数据。 我通过使用 Polling/Pull 消息传递来实现 Push 消息传递,因为我认为等待消息到达并对其进行处理而不是轮询 Web 服务器以获取更新和解析可能没有任何新数据的结果会更有效。
但是,Android 的默认省电方案会在屏幕关闭时关闭 wi-fi 以节省电量,这意味着我与 MQTT 服务器的连接断开。当我重新打开屏幕时,我的服务器连接重新建立,MQTT 服务器上的最后一条消息被传递。
所以现在我面临一个选择。在我的服务代码中实现 wi-fi 锁定,或者使用警报管理器让我的服务定期唤醒,检查 MQTT 发布然后退出。
这个wifi wakelock vs. alarm manager 建议wifilocks 非常低效,我应该使用警报管理器。 如果是这种情况,我就会失去推送通知的“即时交付”优势,并且有效地轮询数据。 Google 的云消息传递/WhatsApp/Viber 等应用程序如何在通过保持 wi-fi 处于活动状态的情况下允许设备休眠且不会耗尽电池电量的同时进行即时消息传递?
【问题讨论】:
标签: android notifications wifi push mqtt