Разница между setAndAllowWhileIdle и setExactAndAllowWhileIdle

В чем разница между AlarmManager.setAndAllowWhileIdle() и AlarmManager.setExactAndAllowWhileIdle()? Как они оба влияют на режим Doze, представленный в Android 6.0 (Marshmallow) API?


person Malwinder Singh    schedule 27.02.2016    source источник


Ответы (1)


Обратитесь к документации AlarmManager:

Примечание. Начиная с API 19 (KITKAT) доставка сигналов тревоги является неточной: ОС будет сдвигать сигналы тревоги, чтобы свести к минимуму пробуждения и использование батареи. Существуют новые API для поддержки приложений, которым требуются строгие гарантии доставки; см. setWindow(int, long, long, PendingIntent) и setExact(int, long, PendingIntent). Приложения, чья targetSdkVersion более ранняя, чем API 19, продолжат видеть предыдущее поведение, при котором все предупреждения доставляются точно по запросу.

Действительно, оба упомянутых вами метода указывают, что они ведут себя как свои аналоги без «AndAllowWhileIdle» (set и setExact). Так что один из них подаст сигнал тревоги в точное время, а другой не будет точным.

person Karakuri    schedule 27.02.2016
comment
Каково влияние Marshmallow Doze на эти API? - person Malwinder Singh; 27.02.2016
comment
@Malwinder, предположительно, AndAllowWhileIdle все равно будут доставлены, если устройство дремлет. - person Karakuri; 27.02.2016