在Android Oreo中每分钟更新一个小部件

时间:2018-05-18 09:35:45

标签: android widget

我有一个显示当前时间和其他信息的小部件,因此它必须每分钟更新一次。我正在使用每分钟触发的AlarmManager并调用更新小部件的IntentService。此解决方案在Oreo之前的Android版本中运行良好。在Oreo上,这个解决方案不起作用 - 看起来AlarmManager没有触发。我已经读过现在有一个TextClock控件可以自动将文本更新为当前时间,但不幸的是,这不是一个解决方案,因为我需要在小部件上绘制其他非文本信息。

警报设置如下:

if (android.os.Build.VERSION.SDK_INT >= 19) {
    alarmManager.setExact(AlarmManager.RTC, timeInMillis(), intent);

} else {
    alarmManager.setRepeating(AlarmManager.RTC, timeInMillis(), 1000 * 60, intent);
}

请注意,每次在Android 19+上触发警报时都会重新安排警报,因为它不是重复警报。

以上是否有替代解决方案可以在Android O及更高版本中使用?

1 个答案:

答案 0 :(得分:0)

如果您使用简单的TextViews显示时钟,请使用TextClock代替TextView(在API级别17中添加)

如果您使用的是更复杂的视图(例如,绘制位图),则必须使用前台服务,该前台服务使用显式的TIME_TICK接收器或处理程序来调度更新。 您必须显示一个前台通知,如果实施不正确,则可能会消耗大量电池...