AlarmManager在每个测试设备上的工作方式不同

时间:2016-07-07 09:34:21

标签: android notifications alarmmanager

我目前正在开发一款应用程序,它需要在确切的时间触发几个警报。

为此,我创建了一个安排下一次警报的接收器。 我还创建了压力测试:

alarmManager调用我的接收器,为下一分钟创建另一个警报。 在xx:30和xx:00,我收到一封邮件,其中包含所有警报的日志,其中包含预期日期和触发日期。

一切都在我的手机上运行良好,一个三星星系笔记3升。 可悲的是,所有设备上的行为都不一样。

  • 华为荣誉:我昨天下午6点推出,直到下午6:16,下午6:45重新启动,然后在晚上7点完全停止。

  • OnePlus 2:目前正在运作,但有些通知没有被触发,大约20%......这对我需要的东西来说很多......

所以我想知道,如果某些设备有一个alarmManager,当它滥用系统时会停止一些警报。不幸的是,我没有找到足够的Doc来支持这个理论。 你有过这种问题,你是如何解决的? 如何建立一个能够在合适的时间以成功率发送通知的系统> 95%?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,经过大量的搜索和解决,我认为三星设备的智能管理器在棒棒糖及以上可能是问题所在。此组件可以延迟警报管理器关闭,如果移动设备正在使用电池并且屏幕关闭,则会在3分钟后触发。当然,您可以停用智能管理器,如下所示:

  • 在设备上启动Samsung Smart Manager应用程序
  • 点击电池
  • 点按应用优化
  • 详细
  • 找到您的APP
  • 选择“已停用”

但是在我的情况下它没有用,也没有禁用智能管理器在2个三星设备上使用Lollipop。它的功能是通过重构我的应用程序包的名称来“欺骗”智能管理器,以包含字符串“alert”或“alarm”,例如com.example.alarm.myApplication。您还可以参考此链接以获取更多信息。

华为等其他公司也有自己的优化应用,可以推迟AlarmManager。 此外,新组件Android Doze可能会延迟AlarmManager 请参阅此link。 最后,您的手机运行良好,因为它低于Lollipop并且不包含三星的SmartManager。