В чем разница между AlarmManager.setAndAllowWhileIdle()
и AlarmManager.setExactAndAllowWhileIdle()
? Как они оба влияют на режим Doze, представленный в Android 6.0 (Marshmallow) API?
Разница между setAndAllowWhileIdle и setExactAndAllowWhileIdle
Ответы (1)
Обратитесь к документации AlarmManager
:
Примечание. Начиная с API 19 (KITKAT) доставка сигналов тревоги является неточной: ОС будет сдвигать сигналы тревоги, чтобы свести к минимуму пробуждения и использование батареи. Существуют новые API для поддержки приложений, которым требуются строгие гарантии доставки; см. setWindow(int, long, long, PendingIntent) и setExact(int, long, PendingIntent). Приложения, чья targetSdkVersion более ранняя, чем API 19, продолжат видеть предыдущее поведение, при котором все предупреждения доставляются точно по запросу.
Действительно, оба упомянутых вами метода указывают, что они ведут себя как свои аналоги без «AndAllowWhileIdle» (set
и setExact
). Так что один из них подаст сигнал тревоги в точное время, а другой не будет точным.