【问题标题】:Most power efficient way of implementing an Android notification app实现 Android 通知应用程序的最省电方式
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-02-27
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多