我正在编写一个需要经常更新的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
每次警报触发时都会记录一条消息。即使设备应该处于睡眠状态,日志消息也会显示 - 但这正是我认为不应该发生的事情。我的错误在哪里?
答案 0 :(得分:1)
也许您使用的其他应用程序正在唤醒设备,并且您的警报会随之执行。如果你使用AlarmManager.RTC
意味着:'如果设备处于唤醒状态则执行,或者等到它处于唤醒状态然后执行'。检查logcat以查看发生的情况并使用此命令查看已注册的其他警报:
adb shell dumpsys alarm