Тревога срабатывает на «спящем» Android-устройстве

1

Я пишу 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 регистрирует сообщение каждый раз, когда он запускается с помощью будильника. Сообщение журнала появляется даже тогда, когда устройство должно спать, но это то, что, как я думал, не должно было случиться. Где моя ошибка?

Теги:

1 ответ

1
Лучший ответ

Возможно, какое-то другое приложение, которое у вас есть, это пробуждение устройства, и ваша тревога запускается с ним. Если вы используете AlarmManager.RTC это означает: "выполнить, если устройство бодрствует или ждать, пока оно не проснется, а затем выполните". Проверьте logcat, чтобы узнать, что происходит, и используйте эту команду, чтобы узнать, какие другие тревоги зарегистрированы:

adb shell dumpsys alarm
  • 0
    @Oderik Вы, вероятно, хотели добавить это как комментарий, а не как редактирование моего поста. Добавьте его ниже, если вы хотите: РЕДАКТИРОВАТЬ: Терпение было ключом: устройству нужно некоторое время, чтобы фактически уснуть после того, как экран погас (и ADB отключен). После этого будильник не срабатывает. Спасибо за совет, который приведет к правильному расследованию. То, как часто просыпается устройство, напоминает мне о свежих родителях. ;)
  • 0
    Нет, я действительно хотел отредактировать ответ, потому что он еще не включает решение: Android действительно требуется некоторое время, прежде чем он действительно уснет. Но я думаю, другие тоже найдут это в комментариях. Еще раз спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню