Приложения на ANDROID имеют обыкновение заниматься всякой ерундой тогда, когда смартфон должен спать. Поэтому половина аккумулятора уходит за ночь от простого лежания на тумбочке. Такие приложения надо вылавливать и принимать меры. Здесь я расскажу, как это делать.
Теория
Смартфон — это не просто мобильный телефон. Он имеет на борту мощные процессоры, гигабайты памяти. Все это потребляет огромное количество энергии — чуть ли не как компьютер. Если все это хозяйство держать включенным все время — батарейки хватит всего на несколько часов.Поэтому после нажатия кнопки выключения телефон отключает все это хозяйство. А чтобы телефон мог принимать звонки — оставляет включенным GSM-модуль. Энергопотребление в таком режиме падает в десятки раз. Проблема в том, что мы, э-э, не всегда хотим, чтобы телефон засыпал после того, как мы нажимаем на кнопку выключения. Например, если мы слушаем музыку. Чтобы музыка играла — смартфону нужно читать mp3’шки, раскодировать их, в общем — продолжать работать. Экран, конечно, погаснет, и это снизит энергопотребление в пару раз, но если еще и система спать уйдет — музыка замолкнет.Чтобы приложения могли блокировать засыпание — разработчики андроида изобрели wakelock’и. Wakelock (Вэйлок) — это такая блокировка на засыпание. Пока какое-то приложение удерживает эту блокировку — телефон заснуть не может.Все бы хорошо, но делается это совершенно незаметно для пользователя, и иногда хрен определишь, почему андроид не засыпает. Или почему просыпается среди ночи на два часа. Сейчас я объясню, как все это отлавливать.
Практика:
Собирать статистику энергопотребления мы будем при помощи BetterBatteryStats. Оно бесплатное.Как этой ерундой пользоваться — хрен разберешься. Для анализа расхода батареи необходим дамп BBS во время бездействия телефона!!!!!
(повторюсь, СУТЬ ПРОГРАММЫ: выяснить, что не даёт спать телефону, когда он должен спать, а не расход батареи во время работы.) Вот инструкция:
1.Включите в дополнительных настройках функции рута , а в настройках дампа отметьте все пункты. В последних версиях, если на устройстве есть рут, функции рута включены автоматически, и, начиная с 2.0.0.0В2, в программе отсутствует настройка файла дампа - все пункты включены по умолчанию.
2.Зарядите батарею, если заряда недостаточно (лучше, если заряд будет не 100%, а, скажем, 60-70, в этом случае дамп будет более реален).
3. Закройте все программы, включая BBS, отключите WiFi.
4. Очистите окошко недавних.
5. Подключите/отключите зарядное устройство.
6. Оставьте телефон бездействовать на 4 часа или более, лучше на всю ночь.
7. Откройте BBS, убедитесь, что в метках стоит: от - отключено (unplugged), до - текущее (current).
8. Сохраните дамп:
9. Откройте дамп, проверьте, что пункты "Kernel wakelocks (вэйклоки ядра)" и "alarms (сигналы)" (если у вас есть рут), отображены. Если нет, повторите всё заново.
Чтобы видеть только то, что происходило со спящим телефоном.
Статистика по-умолчанию — Other — это общая сводка. Если вы видите, что телефон пребывал долгое время в awake’а вместо того, чтобы спать — плохо дело. Чтобы выяснить, почему — нажмите на Other и выберите Partial Wakelocks. Там будут отображены приложения, которые блокировали уход телефона в спячку. Ну а дальше действуйте по ситуации.
Например, можно узнать, что стандартный андроидовский плеер, если его поставить на паузу, не дает телефону заснуть. Кнопки «стоп» в нем, разумеется, нету. Кнопки «закрыть» тоже. Или что фаерфокс со вкладками продолжает жрать батарею в свернутом состоянии. Закрыть его, понятное дело, невозможно — андроид умнее меня и сам решает, когда приложению закрываться, а когда — сворачиваться. Всякое такое вы будете с интересом обнаруживать по пути. Удачи... Более подробно о вэйлоках и как с ними бороться я расскажу в следующей статье... https://ok.ru/androidboot/topic/65817243590809
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Комментарии 1