When and why to use the android permission . Please provide sample code regarding wake lock.

Содержание
closed as too broad by Bill the Lizard Aug 19 ’14 at 11:03
Please edit the question to limit it to a specific problem with enough detail to >If this question can be reworded to fit the rules in the help center, please edit the question.
5 Answers 5
You can use a wakelock for keeping the screen turned on — you can see an example in this code.
If you want more information, you have to specify your question.
WakeLock is a mechanism to keep the device on, as written here and here
It is used for example when you need to do things even when the device seems to be asleep, like downloading files from the internet.
Wakelocks should never be used unless you really need them. The reason is that they consume more battery, and if you have a bug that won’t release them when needed, your app will keep consuming the battery of the device. There are even apps to detect such problematic apps (like "wakelock detector") .
Also, a small tip for people who just wish to let the screen stay on (as long as the app is shown): you don’t need (and you shouldn’t need) the wakeLock permission. Instead, you should just set " andro " on the layout of the current activity. More about this is talked about on the lecture "Coding for Life — Battery Life, That Is" (presentation here)
Мой WakeLock не поддерживает мое устройство.
В OnCreate() у меня есть:
Экран выключится до окончания таймера, как я могу заставить экран оставаться видимым?
mWakeLock – это поле, ранее объявленное так:
Мое устройство использует Android 1.6. Я бы очень признателен за любую помощь в разрешении этого.
WakeLock обычно не вызывает проблем с перезагрузкой. В вашем кодировании могут быть и другие проблемы. WakeLock сильно заряжает аккумулятор, если его не выпускать после использования.
WakeLock – это неэффективный способ сохранения экрана. Вместо этого используйте WindowManager для создания магии. Следующая строка будет достаточной для Wake Wake. Для этого требуется разрешение WakeLock. Также этот код более эффективен, чем wakeLock.
Вы не должны повторно обрабатывать WakeLock вручную. Этот код позволит Android-системе автоматически обрабатывать блокировку. Когда ваше приложение находится в Foreground, тогда Wake-Lock удерживается, и в противном случае система Android автоматически блокирует блокировку.
Попробуйте это и опубликуйте свой комментарий …
У вас есть необходимое разрешение в вашем манифесте?
Вам просто нужно написать следующее:
А затем добавьте разрешение в файл манифеста
Теперь ваша деятельность будет всегда бодрствовать. Вы можете делать другие вещи, такие как w1.release() согласно вашему требованию.
Для достижения той же программы вы можете использовать следующие
Или добавление следующего в макет также будет выполнять вышеуказанную задачу
Я использовал комбинацию следующего, чтобы разбудить мой экран, когда блокировка блокировки клавиатуры и сохранение экрана
ПЕРВЫЙ в вашем AndroidManifest.xml , место
А затем в вашем onResume()
И в вашем onFinish()
У меня похожая проблема. Я могу заставить экран оставаться включенным, но если я использую частичную блокировку слежения и экран выключен, моя функция onFinish не вызывается до тех пор, пока экран не будет включен.
Вы можете проверить блокировку следа, используя mWakeLock.isHeld (), прежде всего, чтобы убедиться, что вы ее получите. Самый простой способ – добавить это в код, установить в нем отладочную точку останова, а затем проверить его.
В моем случае, я получаю это, но частичный замок следа, кажется, ничего не делает. Вот мой рабочий код для тусклого замка экрана.
Пользователи Droid Eris и DROID сообщают мне, что это НЕ работает на их устройствах, хотя на моем G1 отлично работает. На каком устройстве вы тестируете? Я думаю, что это может быть ошибка Android.
Спасибо за эту тему. Мне было трудно выполнить таймер в моем коде в течение 5 минут, чтобы запустить мероприятие, потому что мой телефон, который я установил, отключился / спал около 2 минут. С приведенной выше информацией, похоже, мне удалось найти работу.
Пример фрагмента кода с сайта разработчиков Android
Лучшие практики для фоновых заданий
Убедитесь, что mWakeLock не был случайно очищен, прежде чем вы готовы его выпустить. Если он завершен, блокировка будет отпущена. Это может произойти, например, если вы установили его в null, и впоследствии будет запущен сборщик мусора. Это также может произойти, если вы случайно установили локальную переменную с тем же именем вместо переменной уровня метода.
Я также рекомендую проверять LogCat для записей с тегом PowerManagerService или тега, который вы передаете newWakeLock .
Используйте этот код и не забудьте разрешить wakelock в манифесте android
Держите экран включен
Включите CPU:
Чтобы освободить блокировку wakelock.release() , вызовите wakelock.release() . Это освобождает ваше требование к CPU. Важно освободить замок после того, как ваше приложение закончит использовать его, чтобы избежать слива батареи.
Попробуйте использовать флаг ACQUIRE_CAUSES_WAKEUP при создании блокировки слежения. Флаг ON_AFTER_RELEASE просто сбрасывает таймер активности, чтобы сохранить экран немного дольше.

Как отключить Wakelock без Root. Вы наверняка замечали, что смартфоны начинают разряжаться заметно быстрее спустя каких-то пару месяцев после покупки. В наихудшем случае вы можете получить полностью разряженный гаджет на утро или 15-20% заряда аккумулятора к концу рабочего дня при считанных минутах работы дисплея. И дело здесь вовсе не в батарее, а в установленных приложениях, которые препятствуют уходу смартфона в экономичный спящий режим. Выявить пожирателей батарейки и умерить их аппетиты даже без root-доступа вам поможет наша статья.
Содержание:
На сколько вырастет автономность?
Вопрос, который, скорее всего, сразу возник у вас в голове: «а какой, собственно, прирост автономности даст выполнение этой инструкции?». Всё зависит от того, какие именно приложения установлены у вас на гаджете. Если вы только купили смартфон и успели установить на него только пару-тройку программ, то, скорее всего, никакого прироста не будет. Но, если у вас десятки программ, добрая половина из которых выполняет какие-то действия пока гаджет спит, разница может быть вполне заметной. Так, в нашем случае, наиболее активными программами, не дававшими смартфону заснуть, оказались VoIP-приложение от Tele2, клиент Dropbox с автоматической синхронизацией фотографий и Wearable Widgets. После остановки этих программ разница в разряде смартфона за примерно одинаковое время составила примерно 8%.
![]()
![]()
Что такое wakelock?
Android построена на ядре Linux, благодаря чему предлагает самые широкие возможности как обычным пользователям, так и любителям копаться в системе. В отличие от ОС для компьютеров, которые переводят устройства в энергоэффективный спящий режим после длительного бездействия, Android предназначен для устройств, большую часть времени находящихся в «спячке». Ради увеличения автономной работы Android-устройства при любой возможности должны переходить в экономичный режим. Но когда приложения выполняют важные действия, система не должна уходить в сон. Для этого был придуман механизм wakelock’ов. К сожалению, он и стал основной причиной слабой автономности Android-устройств.
![]()
Полный список потенциальных пожирателей батареи и время их активности сохраняются в логах Android. Их можно просмотреть с помощью инструмента Battery Historian
Нажимая кнопку питания работающего смартфона, вы переводите его в режим Suspend, аналог режима ACPI S3 на настольных компьютерах — или, попросту говоря, в спящий режим. При переходе в Suspend полноценным потребителем энергии остаётся только оперативная память, которая хранит весь системный контент, а остальные компоненты работают в дежурном режиме, потребляя минимум энергии. Благодаря этому энергопотребление в Suspend может составлять всего 1% от номинального. Это актуально для планшетов, но в смартфонах приходится держать включенным ещё и радиомодуль — иначе гаджет не сможет принимать звонки.
Именно так всё должно работать в идеальном мире. Но где он, тот идеальный? В реальном же на сцену выходит механизм wakelock, из-за которого наши гаджеты почти никогда не «спят» полноценно. С английского имя этого деятеля переводится как «прерывание сна». Данное событие может быть вызвано либо ядром системы (Kernel Wakelock, KWL), либо пользовательским приложением (Partial Wakelock, PWL). Последние часто также называют «частичными wakelock». Причины могут быть самыми разными. Среди KWL вы наверняка увидите «будильники», связанные с Wi-Fi и сотовой сетью, а среди PWL — события фоновой синхронизации различных программ.
![]()
Battery Historian показывает причины и длительность wakelock’ов. Так, на скриншоте видно, что сервисы Facebook стали причиной пробуждения смартфона почти на три минуты
Когда отключение может навредить
Справедливости ради отметим, что за многие годы работы над механизмом wakelock Google удалось научить Android бережно относиться к батарее, поэтому основной целью для нас будут частичные wakelock, вызываемые сторонним ПО. Именно они злостно пожирают заряд аккумулятора, особенно при большом количестве установленных программ.
Важно понимать, что именно частичные «будильники» (PWL) часто становятся причиной wakelock’ов ядра. Поэтому бездумное отключение вызовов вэйклоков ядра вместо борьбы с источниками частичных не только не улучшит автономность смартфона, но и может стать причиной быстрого разряда аккумулятора. Наглядный пример: отключение Wi-Fi при большом количестве wakelock’ов под названием wlan_rx_wake заставит приложения, запрашивающие передачу данных, делать это через сотовую сеть. Даже при отсутствии соединения с ней это вызовет более частые просыпания гаджета — и, как следствие, большее энергопотребление.
![]()
Однако и с отключением «будильников» от обычных приложений стоит быть внимательным. Если речь идёт о мессенджере или другой подобной программе, вы рискуете не получить важное сообщение или уведомление. При выполнении этой инструкции стоит выяснить и точно понять, какие именно последствия вызовут те или иные действия.
Инструкция по отключению
Главный инструмент в борьбе с программами-источниками wakelock’ов — приложение BetterBatteryStats , которое хоть и платное, но стоит каждой потраченной на него копейки.
Шаг 1. Подготовка adb. Разархивируйте Platform Tools в любую папку на компьютере и перейдите в неё в Проводнике. После этого откройте командную строку Windows . Для этого кликните правой кнопкой мыши по пустому месту в окне Проводника с зажатой клавишей Shift и выберите пункт «Открыть окно команд». Для запуска консольной программы из командной строки Windows достаточно ввести её название (в нашем случае — adb). Если вы используете командную оболочку PowerShell, для запуска приложения потребуется указать к нему относительный путь, например, .adb.
Шаг 2. Подключение смартфона к ПК через adb. Для управления смартфоном с компьютера необходимо разрешить работу adb на самом гаджете. В настройках аппарата найдите пункт «Об устройстве», внутри которого семь раз коснитесь пункта «Номер сборки».
![]()
На главном экране настроек появится новый раздел «Для разработчиков», в котором нужно найти и активировать пункт «Отладка по USB».
![]()
Для проверки работы adb в консоли введите команду
Если всё сделано правильно, в появившемся списке вы увидите своё устройство.
![]()
Сразу после ввода команды на смартфоне появится всплывающее окно, в котором необходимо поставить галочку «Всегда разрешать отладку с этого компьютера», а затем нажать кнопку ОК.
![]()
Шаг 3. Предоставление системных разрешений. Теперь самое время дать приложению BetterBatteryStats системное разрешение для доступа к данным батареи. Это делается всего одной командой, которую необходимо ввести в консоль:
Если всё прошло правильно, вы не увидите вывода команды в консоли (курсор просто переместится к следующей строке), а в самой BetterBatteryStats пропадёт надпись «Нет доступа к вэйклокам ядра» при выборе категории Kernel Wakelock.
![]()
Шаг 4. Анализ wakelock’ов. После установки BetterBatteryStats и предоставления ей разрешений программе может понадобиться некоторое время для сбора статистики. Для этого просто пользуйтесь смартфоном в штатном режиме несколько часов. Когда будет собрана достаточная статистика, запустите приложение и выберите режим отображения Partial Wakelock. Из скриншота видно, что смартфон работал автономно чуть больше часа, и 25 минут из этого часа аппарату не давал заснуть клиент Dropbox. Нетрудно догадаться, что спустя сутки именно эта программа станет основной причиной разряда аккумулятора, когда смартфон находится в спящем режиме.
![]()
Шаг 5. Отключение wakelock’ов через adb. В большинстве приложений проблему с активной генерацией «будильников» можно решить, не залезая вглубь системы. Для этого нужно прикинуть, какая из настроек программы может вызывать нежелательное поведение. В случае с Dropbox это автоматическая синхронизация фотографий с облаком.
Более радикальный способ — удаление программы, которая вэйклоки вызывает. Именно так проще всего избавиться от разряда батареи клиентом Facebook и его мессенджером.
Если же изменение настроек программы результатов не принесло, но и отказываться от приложения вы не готовы, можете попробовать отключить wakelock’и от него вручную. Для этого сперва понадобится узнать название пакета. Чтобы сделать это, достаточно нажать на иконку программы в списке BetterBatteryStats. Так, из скриншота ниже видно, что полное название пакета Dropbox — com.dropbox.android.
![]()
Теперь, чтобы запретить программе генерировать wakelock’и, достаточно ввести в консоль adb следующую команду, подставив нужное название пакета:
В нашем случае команда будет выглядеть так:
Важно отметить, что попытки программ вызвать wakelock’и по-прежнему будут отображаться в BetterBatteryStats, но фактического влияния на устройство они больше оказывать не будут.
Шаг 6. Альтернативный способ: отключение wakelock’ов через GUI. Если вы хотите за один раз навести порядок в своём смартфоне, не обязательно вводить команды adb: всё можно сделать и с помощью бесплатных мобильных приложений App Ops и Shizuku Manager . Первым делом запустите Shizuku Manager и отправьте на смартфон следующую команду:
В зависимости от модели смартфона она может выглядеть по-разному, поэтому лучше свериться с текстом, который Shizuku Manager показывает в главном окне. Если всё сделано правильно, на вашем смартфоне будет запущен собственный сервер adb, который позволяет выполнять команды с повышенными привилегиями в обход ПК.
![]()
Теперь запустите App Ops и согласитесь с настройками по умолчанию. Если adb сервер был запущен, вы увидите список программ, установленных на смартфоне.
![]()
После этого вам останется только найти в списке нужную программу и запретить ей отключение спящего режима, а, при желании, ещё и работу в фоновом режиме.
![]()
![]()
Борьба с другими причинами пробуждения смартфона
Не все wakelock’и стоит отключать сторонними методами. О некоторых стандартных способах борьбы с ними (например, изменением настроек приложений) мы уже упомянули, но хотим вам предложить ещё несколько действенных методов.
1. Не используйте таск-киллеры. Если приложение посчитает, что не завершило свою работу, оно всё равно вызовет вэйклок и запустится снова, потратив ещё больше заряда. Единственное исключение — Greenify , который использует достаточно продвинутые алгоритмы завершения работающих в фоне программ и не снижает время автономной работы смартфона. Но для продвинутых функций этого приложения понадобятся права root .
2. Выключайте услуги местоположения. Помимо множества сторонних программ доступ к местоположению постоянно требуют и сервисы Google. Поэтому, когда вам не нужно определение местоположения напрямую (например, во время навигации), отключайте эту услугу. К счастью, сделать это в современных смартфонах очень просто — достаточно нажать на соответствующую иконку в панели уведомлений.
3. Оптимизируйте работу программ в фоне. Помимо непосредственно приложений, которые вы видите на экране, программы для Andro >Фоновые приложения .





