У меня вопрос о wakelock. В случаях, показанных ниже, освобождает ли ОС Android wakelock ( PARTIAL_WAKE_LOCK
, если необходимо указать), чтобы предотвратить активацию wakelock и расход заряда батареи до отключения питания (не в спящем режиме).
Случай 1-a:
Приложение имеет wakelock (без опции тайм-аута) в одном из своих потоков (пожалуйста, подумайте, что в данном случае это разумно), и оно было разработано для снятия wakelock, когда критическая задача была завершена. Приложение может быть убито диспетчером задач или пресловутым тасккиллером, и у приложения нет шанса разрешить его потоку освободить wakelock. Что происходит с этим будильником?
Случай 1-b:
(Если ответ на случай 1-a - «Да, не беспокойтесь», проигнорируйте этот случай.)
То же, что и в случае 1-a, но приложение дало тайм-аут для пробуждения, скажем, 3 секунды. Действует ли эта опция тайм-аута?
Случай 2-a:
Представьте, что есть служба, которая была запущена AlarmManager (через широковещательный приемник), и служба получила блокировку пробуждения (без опции тайм-аута). Эта услуга предназначена для минимизации времени, затрачиваемого на активацию блокировки. Но, к сожалению, ОС Android выбрала этот сервис, чтобы убить его из-за нехватки памяти. (Я не знаю, не отключит ли ОС службу при активации wakelock, но, полагаю, ОС это не волнует. Но я надеюсь, что ОС выпустит wakelock позже.) Что происходит с этим wakelock?
Случай 2-b :
(Если ответ на случай 2-а - «Да, не волнуйтесь», проигнорируйте этот случай.)
То же, что и в случае 2-a, но служба предоставила тайм-аут для пробуждения, скажем, 3 секунды. Действует ли этот параметр тайм-аута?