Выполняет ли ОС Android wakelock, если приложение или сервис, в котором они находятся, убиты?

У меня вопрос о 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 секунды. Действует ли этот параметр тайм-аута?

47
задан StarPinkER 28 April 2013 в 02:02
поделиться