Unlocker for wakelock detector не видит телефон
WakeLock - это набор механизмов, предоставляемых уровнем инфраструктуры Android, которые могут использоваться приложениями для управления состоянием устройств Android. Состояние устройства здесь в основном относится к открытию и закрытию экрана, а также к продолжению работы процессора. Просто поймите, что WakeLock - это средство, чтобы система не спала.
Когда телефон не используется на экране в течение некоторого времени, система переходит в спящий режим, и некоторые фоновые задачи могут не выполняться нормально, например, прерывание загрузки по сети, пауза воспроизведения фоновой музыки и т. Д. WakeLock призван решить эту проблему. Пока приложение применяется для WakeLock, система не перейдет в спящий режим до того, как WakeLock будет выпущен. Даже когда экран выключен, задача, выполняемая приложением, не будет прервана система.
WakeLock - это внутренний класс PowerManager, путь к которому находится по адресу:
WakeLock классифицируется следующим образом:
- PARTIAL_WAKE_LOCK: экран выключен, и ЦП продолжает работать, когда подсветка клавиатуры выключена.
- PROXIMITY_SCREEN_OFF_WAKE_LOCK: отключение экрана на основе датчика приближения. Наиболее типичный сценарий приложения - когда мы звоним по телефону близко к ушам, экран автоматически выключается.
- SCREEN_DIM_WAKE_LOCK / SCREEN_BRIGHT_WAKE_LOCK / FULL_WAKE_LOCK: эти три типа WakeLock устарели. Их цель - сохранить яркость экрана. Официальный представитель Android рекомендует использовать getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); Способ замены. Поскольку этот метод проще, чем применение WakeLock, и не требуется специального приложения. android.permission.WAKE_LOCK Разрешения.
- DOZE_WAKE_LOCK / DRAW_WAKE_LOCK: скрытые категории, используются только на системном уровне.
Флаг WakeLock выглядит следующим образом:
- ACQUIRE_CAUSES_WAKEUP: включить экран, например, экран включается после того, как приложение получает уведомление.
- ON_AFTER_RELEASE: после выхода WakeLock экран не выключается сразу.
- UNIMPORTANT_FOR_LOGGING: скрытый флаг, используется только на системном уровне.
WakeLock выполняет операцию настройки из пользовательского пространства, затем входит в пространство ядра и, наконец, записывает в /sys/power/wake_lock Файловый узел.
Давайте проследим процесс получения WakeLock с точки зрения исходного кода.
hardware/libhardware_legacy/power/power.c
collect_wake_lock и, наконец, записать wakelock в узел в этом методе
К использованию WakeLock следует обращаться осторожно. Неправильное использование может сделать приложение "убийцей батареи". Используемые принципы
- Постарайтесь не использовать его, если вы им не пользуетесь: например, если вы хотите, чтобы экран оставался ярким, вам следует использовать его. getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); Способ.
PowerManager.FULL_WAKE_LOCK будет держать экран включенным в течение длительного времени, например, установив автоматическое выключение экрана на 15 секунд. После применения wakelock экран не выключится, даже если он превышает 15 секунд. Но если пользователь активно нажимает кнопку питания, экран все равно будет выключен.
- Если вам нужно его использовать, не забудьте освободить его после использования.
Есть два способа подать заявку на WakeLock: получить () и получить (длительный тайм-аут). Последний относительно безопаснее. Если вы забудете освободить WakeLock, система автоматически отключится по истечении тайм-аута. .
Типичное использование WakeLock выглядит следующим образом:
В то же время вам нужно добавить разрешения в файле манифеста
Отладка на уровне приложений
Если вы просто проверяете, не срабатывает ли будильник определенного приложения ненормально, вы можете использовать команду
Для просмотра, например, в следующем примере кода
При входе в метод onResume информация dumpsys выглядит следующим образом:
Проходить PARTIAL_WAKE_LOCK 'azhengye-test-wakelock' ON_AFTER_RELEASE ACQ=-4m52s949ms LONG (uid=10124 pid=31473 pkg=com.azhengye.testpath) Вы можете видеть, что приложение wakelock успешно работает.
Если вы введете метод onPause, то только что запрошенный wakelock должен быть снят. В это время информация из dumpsys выглядит следующим образом:
Ничего страшного, вышло нормально. Если приложение было запущено, чтобы освободить инструкцию wakelock, но информация из dumpsys по-прежнему видит, что wakelock удерживается, это проблема, и нам необходимо ее удалить.
Отладка системного уровня
Отладить проблемы, связанные с wakelock, на системном уровне сложнее. Основные шаги заключаются в следующем.
Согласно анализу журнала
Сначала включите переключатель отладки
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
Затем dumpsys power view и поиск в logcat acquireWakeLockInternal Ключевое слово для просмотра статуса приложения Wakelock,
, например
ищи releaseWakeLockInternal Проверьте выпуск. lock= Следующие целые числа могут соответствовать получению и освобождению. В сочетании с меткой времени logcat вы можете получить продолжительность удержания wakelock. Кратковременное удержание wakelock обычно не вызывает проблем. Вид удержания wakelock в течение длительного времени будет увеличиваться потребляемая мощность. Есть проблема, это должно быть основано на tag Перейдите в поле кода, чтобы просмотреть конкретный процесс получения / выпуска.
После того, как система проработает какое-то время, получите отчет об ошибке. Используйте архиватор, чтобы проверить статус приложения wakelock.Вы можете проверить предыдущий блог для подробностейПостроение среды анализа энергопотребления историка батареи Android
Wakelock Detector (сокращённо WLD ) находит все те нехорошие приложения, которые не дают Андроид-смартфону «заснуть».
💡 Нужен Root или прямые руки для настройки через ADB для устройств без Root.
Программа отслеживает процессы и находит среди них все попытки пробуждения для использования аппаратных ресурсов. Из-за них операционная система считает, что выполняются важные задачи. Смартфон остаётся активным вместо того, чтобы уйти в режим минимального энергопотребления после длительного бездействия.
Среди прочих программ для батареи на Андроид Wakelock Detector приносит пользу всем пользователям (и неопытным, и продвинутым), кто столкнулся с повышенным расходом заряда. Это однозначно хороший помощник, «не мусор» .
Слева-направо: детализация по вэйклокам, время активности приложений, сколько раз пробуждались процессы в рамках группы. Слева-направо: детализация по вэйклокам, время активности приложений, сколько раз пробуждались процессы в рамках группы.Оценка: «Удовлетворительно» (почти 1000 👥 оценок)
⚠️К сожалению, многие не читают инструкцию и занижают оценку.
Root: 👎 нужен, но с инструкцией ниже возможна работа без Root
Недостатки: описание и инструкции «много букв» и запутаны разработчиком, на смартфонах без Root инструкция работает до первой перезагрузки
- ↘️ Платная версия («Wakelock Detector Full — виджеты, база знаний, чуть больше функций, если есть Root)
- ↘️ Бесплатная версия («Wakelock Detector Lite» — основная часть и то, что нужно большинству пользователей, особенно если нет Root)
Что умеет Wakelock Detector (WLD)
Программа собирает статистику и отображает её по различным фильтрам сортировки:
- время использования процессора,
- активность экрана,
- наиболее ресурсоёмкие приложения,
- «вэйклоки» с группировкой по процессам.
Алгоритмы WLD ставят перед собой цель отобразить максимум информации, которая поможет вам определить критически прожорливые процессы. Вы сможете настроить их, остановить или удалить со смартфона, определяя неугодных по количеству так называемых «вэйклоков».
🎓 Wakelock — приложения, активно нагружающие процессор смартфона в фоновом режиме из-за некачественного кода, в рекламных/коммерческих целях или даже по злому умыслу разработчика.
При использовании Wakelock Detector следует понимать, что не все «вэйклоки» злонамеренные. Периодически пробуждениями занимается сама система или её штатные функции. Этот режим работы заложен в номинальный расчёт автономности смартфона — вам не нужно влиять на эти процессы.
А вот приложения магазинов, пиццерий, игр и других программных продуктов следует изучать по статистике пристально. Зачастую, например, источником прожорливости будет какой-нибудь навигатор с рекламными метриками при ваших перемещениях (достаточно запретить ему геолокацию или выход в интернет, когда не запущен). В таких ситуациях Wakelock Detector помогает обнаружить, почему Андроид-смартфон стал быстро разряжаться.
Wakelock Detector без Root действительно работает, если выполнить инструкцию ниже. Wakelock Detector без Root действительно работает, если выполнить инструкцию ниже.✅ Как пользоваться без Root
Нужен компьютер на базе Windows. Способ запуска без Root работает для платной и бесплатной версий Wakelock Detector . Ниже продублируем ссылку на бесплатную Lite-версию для удобства.
⚠️ Возможные проблемы при настройке Wakelock Detector без Root
Если обнаружить смартфон не удаётся (вместо кнопок пишет « No devices found »), то зайдите в каталог с драйверами ADB и откройте файл «MAF32» (командная строка). Каталог ADB по умолчанию имеет адрес:
- C:\Program Files (x86)\Minimal ADB and Fastboot
Как только запустится командная строка, выполните инструкцию:
- в командной строке нажмите «пробел» и введите команду — запустите её кнопкой «Enter»:
adb tcpip 5555 - откройте браузер Chrome, запустите вновь расширение «Unlocker for WakeLockDetector»;
- смартфон должен отобразиться (и появятся две кнопки).
🔎 Если смартфон снова не обнаружен , то заново запустите консоль файлом «MAF32» и введите вместо команды из первого пункта другую:
com.uzumapps.wakelockdetector.noroot android.permission.BATTERY_STATS
В 99% случаев эта инструкция позволяет использовать программу Wakelock Detector на любом смартфоне без Root.
Внимание! После перезагрузки смартфона выполните эти указания заново, иначе Wakelock Detector не будет собирать статистику без рут.
▶ Полная версия официальной инструкции на английском языке ( нам показалась топорной и старой ).
Нули — это неправильный сброс индексов аккумулятора при зарядке, просто зарядите его до 100%. Нули — это неправильный сброс индексов аккумулятора при зарядке, просто зарядите его до 100%.📋 Нюансы
1️⃣ Нулевая статистика
В программе Wakelock Detector не должно быть «нулевой статистики». То есть если у вас отображается хотя бы по одной группе « 0 раз » и хотя бы по одному процессу « 0 s », то алгоритм не работает.
Чаще всего проблема встречается на смартфонах Xiaomi . Причина в сложных метриках по аккумулятору в MIUI . Могут быть подобные «пропуски» в аналогичных устройствах с продвинутой индикацией статистики.
2️⃣ Не работает USB-отладка на Xiaomi
В MIUI есть нюансы настройки USB-отладки. Для этого режима система требует наличие активного Mi-аккаунта. Если у вас смартфон Xiaomi:
- Заведите Mi-аккаунт , если его до сих пор нет (можно привязать Google-профиль, а затем отключить синхронизации с серверами Xiaomi).
- Откройте раздел « Для разработчиков » ( инструкция , как его включить с сайта «XiaomiDo»).
- Включите ползунок « Отладка по USB ».
- Включите ползунок « Установка через USB ».
- Включите ползунок « Отладка USB (Настройки безопасности)».
Последний пункт потребует разрешить доступы. После смартфон издаст сигнал и переподсоединится к компьютеру (если он подключён кабелем).
Вы когда-нибудь ложились спать с полностью заряженным аккумулятором Android, но просыпались утром с полностью разряженным телефоном? Если ответ положительный, возможно, на вас влияют приложения для пробуждения, установленные на вашем смартфоне. Конечно, это также может быть связано с плохим состоянием батареи. Но сценарии пробуждения системы из-за некорректного поведения приложений, которые используют ресурсы вашего телефона и расходуют заряд батареи, могут возникать даже на исправных устройствах.
Что такое Wakelocks?
Когда вы нажимаете кнопку питания на телефоне, чтобы заблокировать экран, вы предполагаете, что телефон перейдет в спящий режим. Но это не всегда так. Есть приложения, которые работают в фоновом режиме, используя ресурсы устройства и не позволяя телефону переходить в режим глубокого сна. Из-за этого процессор телефона постоянно работает, что разряжает аккумулятор, даже когда вы им не пользуетесь. Большинство этих пробуждений вызвано тем, что приложения хотят синхронизировать данные в фоновом режиме или использовать службы определения местоположения.
Поэтому приложения, которые поддерживают работу вашего процессора даже после того, как ваш телефон находится в спящем режиме, называются приложениями wakelock. Однако нельзя винить только эти приложения. Эти будильники необходимы, если вы хотите видеть обновленный почтовый ящик утром. Приложения используют разрешение для синхронизации данных с серверами, что иногда длится всего несколько минут.
Проблема начинается, когда некоторые приложения используют это разрешение в течение часа и заставляют процессор вашего телефона работать все время. Возьмем, к примеру, сервисы Google Play. Если у вас включена функция определения местоположения, эта служба будет держать процессор вашего телефона в активном состоянии почти всю ночь и значительно сокращать время работы от батареи.
Итак, теперь, когда мы знаем, что такое wakelocks, давайте посмотрим, как мы можем обнаружить приложения, которые его вызывают.
Заметка: Поскольку для получения этих данных нам потребуются повышенные разрешения, необходим root-доступ. Боюсь, что без прав root на вашем устройстве вы мало что сможете сделать с проблемой wakelock. Но в настоящее время рутировать устройство легко, поэтому не забудьте добавить эту страницу в закладки и вернуться к ней, как только вы выясните, как рутировать свой Android (и рутировали его тоже).
Обнаружение приложений, вызывающих Wakelocks
Если у вас есть телефон с рутированным доступом, обнаруживать бодрствования довольно просто. Полностью зарядите аккумулятор до 100% и установите приложение под названием Детектор Wakelock, на устройстве. Сделав это, перезагрузите телефон один раз и запустите приложение. Wakelock Detector запросит root-доступ и будет работать в фоновом режиме для сбора данных.
Вернитесь в приложение через несколько часов, и вы сможете увидеть общее количество времени, в течение которого ваши приложения поддерживали работу процессора в фоновом режиме. Вы также можете проверить, сколько раз приложение запускало wakelock.
Решение проблемы
Итак, теперь, когда мы знаем, какие приложения вызывают эти блокировки, одним из самых простых вариантов было бы удалить приложение и найти лучшую альтернативу в Play Store. Но есть системные приложения, такие как Google Play Services, которые вы не можете удалить. Эти приложения необходимы для работы телефона.
Вывод
When and why to use the android permission . Please provide sample code regarding wake lock.
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
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.
Мой 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 >Фоновые приложения .
Читайте также: