我正在编写一个需要经常更新的 Android AppWidget(是的,我知道,不应该那样做,无论如何......)。我希望它仅在可见时才更新,但令人讨厌的是似乎没有类似于WallpaperService.Engine.onVisibilityChanged(boolean visible)
.
这里建议的方法是设置一个警报,每毫秒AlarmManager.setRepeating(AlarmManager.RTC, firstShot, interval, pendingIntent)
触发一次更新。interval
这至少不会在设备处于睡眠状态时唤醒设备。
我就是这么做的。我的PendingIntent
样子是这样的:
final Intent intent = new Intent(context, CountdownWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
final PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
CountdownWidgetService
每次被警报触发时都会记录一条消息。即使设备应该处于睡眠状态,日志消息也会显示 - 但这正是我认为不应该发生的事情。我的错误在哪里?