首页 文章

使用AlarmManager更新Android中的App小部件的效率

提问于
浏览
1

我开发了一个需要每10分钟更新一次的App Widget . 在关于App Widgets的Android文档中,指定如果窗口小部件需要更频繁地每小时更新一次,建议使用AlarmManager并将警报类型设置为RTC或ELAPSED_REALTIME,以便仅在设备是苏醒 .

我已经实现了AlarmManager,我的小部件每10分钟正确更新一次 . 经过多次测试,同时使用RTC和ELAPSED_REALTIME报警类型,我看到我的小部件在设备进入休眠状态后仍在更新 . 我可以在LogCat中看到我的小部件即使在30分钟后设备进入休眠状态(屏幕关闭后30分钟)也会更新 .

我的问题是,如果警报仍然传递,并且我的小部件每10分钟更新一次,即使在设备进入睡眠状态后如何使用带有RTC或ELAPSED_REALTIME的AlarmManager,因为文档说更多的电池效率比仅为updatePeriodMillis属性设置600,000毫秒在我的小部件提供程序xml文件?

1 回答

  • 1

    有几件事:

    • RTC和ELAPSE_REAL_TIME都有WAKEUP和非WAKEUP版本,因此如果您不希望在手机休眠时更新小部件,则可以选择非WAKEUP版本 . 如果设置 updatePeriodMillis ,它将以任一方式唤醒设备 .

    • 当您使用 setInexactRepeating() 而不是 setRepeating() 设置闹钟时,Android会捆绑多个不准确的闹钟并同时触发它们,这样可以提高电池效率 . 另外根据doc

    从API 19开始,所有重复警报都不准确 .

    updatePeriodMillis请求的更新不会每30分钟发送一次以上 .

    所以如果你需要每10分钟更新一次,它可能对你没用 .

相关问题