У меня есть приложение, которое должно регулярно запускать службу фона, и я использую AlarmManager для достижения такого поведения. Чтобы сократить длинный рассказ, он настроен на выполнение дважды в минуту (каждые 30 секунд), и для выполнения (в основном спать) требуется около 20 секунд.Android AlarmManager иногда поздно
Я использую несколько устройств Android для тестирования (Galaxy SII с 4.1.2, Nexus 4 с 4.2.2 и более поздними версиями с CyanogenMOD 10.1.2 и Nexus 7 с 4.2.2), и все они ведут себя последовательно при подключении к USB и отладчик.
Как только я отсоединяю устройство и оставляю его на столе, я замечаю, что ИНОГДА услуга пропустит один интервал. Очень внимательно смотря на журнал, я вижу, что служба иногда откладывается на определенный период времени. Если он должен работать в xx: 05 и xx: 35, я заметил, что он начинается с xx: 45 (на 10 секунд позже, чем он должен).
Самое первое, что делает служба, это получить частичный замок слежения, чтобы гарантировать, что центральный процессор не заснет во время его работы - этот замок блокировки не освобождается, пока он не будет полностью выполнен с тем, что он должен делать.
Моя первая мысль заключалась в том, что это было какое-то разделение ресурсов, которое вызывало поведение (есть другие процессы, запущенные с приложением), но сервис даже не запускается, он даже не получает блокировку слежения, пока некоторые 10 секунд спустя.
Следует отметить, что это поведение наиболее ярко проявляется на Nexus 4, где отсутствует до 30% данных, в то время как на Galaxy SII и Nexus 7 (около ~ 2%) значительно меньше, но это по-прежнему вызывает беспокойство, поскольку это необъяснимое поведение.
Благодарим за ответ. Похоже, что описанная вами концепция повышает надежность за счет заметного запаса на Nexus 4, где она равна Galaxy S2, - однако есть еще один «пакет», который, по-видимому, отсутствовал (из 500, который он нажал, так как я сделал изменение). К сожалению, журнал был усечен после этого события, поэтому я не мог точно видеть, что произошло. – Iv4n
Я отмечаю этот ответ как принятый, поскольку информация содержит улучшенную надежность Временной службы. Тем не менее, пока еще нет объяснения. – Iv4n