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