2014-11-08 2 views
0

Мне нужно делать задание каждую неделю в моем приложении, и это не очень заботит точность, поэтому я думаю использовать setInexactRepeating(), но я не могу найти константу для недельная задержка. Из документации кажется, что вы можете использовать только определенные константы. Я мог бы использовать более простой setRepeating(), но я не хочу устанавливать точную тревогу для api < 19. Как я могу это сделать? Могу ли я установить таймер только на INTERVAL_DAY?Повторяя неточные сигналы тревоги один раз в неделю

+1

Как уже упоминалось Egor N, константы просто для удобства и представляют периоды времени в миллисекундах. Если вы посмотрите на 'setInexactRepeating (...)' параметр 'intervalMillis' является значением' long' - используйте все, что хотите. – Squonk

ответ

2

Если вы посмотрите на постоянной INTERVAL_DAY вы увидите:

public static final long INTERVAL_DAY = 86400000L; 

Это 86,400,000 миллисекунды, которая равна 1 день. Это означает, что вы можете использовать свое значение в миллисекундах в методе setInexactRepeating. Неделя будет INTERVAL_DAY * 7.

+0

Хорошо, но, может быть, я не понимаю документы. В нем говорится, что вы можете использовать * только * предопределенную константу, поэтому я думал, что не могу определить свою собственную константу, не так ли? – greywolf82

+1

Вы можете использовать любое значение, которое хотите, но: «До API 19, если это один из INTERVAL_FIFTEEN_MINUTES, INTERVAL_HALF_HOUR, INTERVAL_HOUR, INTERVAL_HALF_DAY или INTERVAL_DAY, тогда сигнал тревоги будет выровнен по фазе с другими аварийными сигналами, чтобы уменьшить количество пробуждений. В противном случае будильник будет настроен так, как если бы приложение вызвало setRepeating (int, long, long, PendingIntent). По API 19 все повторяющиеся сигналы тревоги будут неточными и подлежат пакетной обработке с другими аварийными сигналами независимо от их указанного интервала повторения. " –

Смежные вопросы