Запуск команды/службы в первый раз дня

Я пишу простой виджет для Android, который отображает информацию, которая меняется каждый день. Поэтому виджет необходимо обновить в полночь. Все обновление реализовано как служба и работает хорошо, проблема заключается в вызове:

Единственное решение, которое я нашел, - это использовать AlarmManager для добавления точного повторяющегося таймера в полночь каждый день. Затем установите частичный Wake-Lock, чтобы убедиться, что устройство не спит, и запустите код. Это должно работать, как и ожидалось, но из-за использования блокировки пробуждения я просыпаю устройство, поэтому я ищу более тонкую версию:

Нет необходимости будить устройство ровно в полночь, достаточно, если я получу событие таймера при первом включении устройства в новый день. Если устройство находится в спящем режиме, никто не может смотреть на виджет, поэтому ничего страшного, если виджет будет обновляться при каждом повторном включении устройства.

Другими словами: как запустить службу в первый момент дня, когда устройство не находится в спящем режиме, чтобы предотвратить пробуждение? Мне все еще нужно, чтобы устройство бодрствовало в течение определенного периода времени.

Как это можно сделать?


person theomega    schedule 25.08.2011    source источник


Ответы (1)


Вы можете указать AlarmManager отложить ваш вызов до тех пор, пока устройство все равно не проснется. Тогда не используйте WakeLock в .

person Marcus Wolschon    schedule 25.08.2011
comment
Как вы можете это сделать? Использование AlarmManager.setInexactRepeating() не гарантирует, что моя служба запустится при первом пробуждении за день. - person theomega; 25.08.2011