inactive apps что это

Увеличение времени работы от аккумулятора в Android M

По мнению многих разработчиков, в большинстве случаев к слишком быстрому разряду аккумуляторов смартфонов приводит плохая оптимизация приложений. В мае этого года в Google прошла очередная ежегодная конференция Google I/O, на которой было анонсировано много всего интересного для разработчиков. В частности, когда речь зашла об Android M, то одной из центральных тем были именно производительность мобильных устройств и продолжительность работы от аккумулятора. Давайте взглянем на новые функции и инструменты, которые помогут пользователям и разработчикам выжать ещё больше из аккумуляторов мобильных устройств.

Это один из главных инструментов в новой ОС для обуздания активности приложений, когда устройство находится в спящем режиме. На смартфонах под управлением Lollipop и более старых версий Android, любое приложение может вывести устройство из сна ради своего обновления, что позволяет поддерживать актуальность данных. Doze анализирует текущее состояние устройства и данные с акселерометра, определяет, когда смартфон не используется, и отправляет его в «глубокий сон». В этом режиме обновление приложений запрещается до тех пор, пока устройство не будет разбужено каким-то иным, более приоритетным событием. В режиме «глубокого сна» отключается сетевая активность, блокировки засыпания, предупреждения и задачи JobScheduler.

Как подсказывает опыт, часто обновляющиеся в фоновом режиме приложения являются одной из главных причин быстрого разряда аккумулятора. И Google придерживается того же мнения. На конференции была приведена информация, что планшеты Nexus 9 с запущенным Doze работали почти в два раза дольше в режиме ожидания.

Чтобы протестировать эту функцию, обновитесь до Android M, а затем с помощью команды ADB отключите зарядку устройства:

Doze может переводить устройство в один из нескольких режимов:

Сколько времени нужно на перевод устройства в этот режим?

Это позволяет получить много интересной информации о Doze. К примеру, на Nexus 6 (с включённым дисплеем) были получены следующие результаты:

В первой части перечисляются процессы, аккредитованные Doze. Их активность никак не ограничивается. Обратите внимание, что в этот список вручную добавлен Facebook (Настройки —> Аккумулятор —> Facebook —> активировать «Отключить оптимизацию»). Далее идёт раздел с информацией с акселерометра и состоянием дисплея. Эти данные будут использоваться для последующего вывода устройства из состояния «глубокого сна». В данном примере дисплей включен, а значит Doze находится в режиме ACTIVE.

Период неактивности устройства установлен в 30 минут. Если выключить дисплей, этот раздел меняется:

С выключенным дисплеем устройство переходит в режим INACTIVE и может переключиться в режим перехода в «глубокий сон». Таймаут также равен 30 минутам, и, согласно таймеру, из этого периода прошло около 1,5 минут. Вручную переводим устройство в IDLE_PENDING:

Спустя 30 минут пребывания в этом режиме, устройство перейдёт в IDLE. Таким образом, для перехода в «глубокий сон» требуется суммарно 60 минут. Переход:

Через 60 минут сработает триггер, устройство пробудится и отправит все накопившиеся сообщения, инициализирует события и триггеры. Параметр mNextIdleDelay говорит о том, что следующее пробуждение из «глубокого сна» произойдёт через 2 часа. Получается следующая цикличность смен режимов: 1, 2, 4 и 6 часов. То есть самый большой промежуток между пробуждениями составляет 6 часов, 4 раза в сутки.

Как ведут себя приложения, когда устройство выходит из режима «глубокого сна»?

Можете самостоятельно протестировать своё приложение, отправив устройство в «глубокий сон»:

С помощью той же команды его можно пробудить (введя значение false вместо true ), и посмотреть, как активируются разные процессы, рассылаются и выполняются запросы.

Как видите, Doze является замечательным инструментом для экономии аккумулятора, когда устройство выключено.

Режим ожидания для приложений

В текущих версиях Android любое приложение имеет доступ к радиомодулю, даже в фоновом режиме. Иными словами, какое-нибудь давно скачанное и забытое вами приложение может втихую по несколько раз в день передавать какие-либо данные без вашего ведома. С помощью Doze это можно заблокировать запуск приложений, но они всё-равно смогут запускать процессы и обновляться, когда пользователь включает дисплей устройства. С помощью новой функции режима ожидания для приложений (App standby) можно приложениям, которые не запускались в активном режиме в течение какого-то периода времени (в днях), принудительно назначать режим ожидания. В этом режиме приложениям ограничивается доступ в интернет или запуск каких-либо процессов, пока смартфон не будет подключён к зарядному устройству. Тем самым экономится аккумулятор устройства.

Как работает режим ожидания для приложений? Если выполнить:

то можно получить много информации об активности приложений за последний день/неделю/месяц и год.

Встроенный в ОС алгоритм определяет дату последнего запуска приложения, и при необходимости переводит его в неактивный режим. Список таких приложений можно просмотреть, если зайти в меню настроек в пункт “Inactive apps”.

Производительность приложений

Наверное, все из вас оказывались в ситуации, когда аккумулятор смартфона садится слишком быстро, но непонятно, из-за чего это происходит. Если зайти в Настройки —> Батарея, то можно получить подробную статистику потребления энергии по каждому приложению:

В данном случае основные потребители заряда аккумулятора: ЦПУ (в том числе и в фоновом режиме), сетевой протокол и радиомодуль. Представленная статистика собрана за 28 часов, с момента полной зарядки аккумулятора.
Также в Android M теперь доступно меню, с помощью которого можно «игнорировать оптимизацию». В этом случае отключаются Doze и режим ожидания для приложений. Это позволяет разработчикам тестировать производительность своих приложений как с включённой, так и с выключенной оптимизацией, выясняя, как это влияет на продолжительность работы от аккумулятора. А заодно как быстро устаревают данные в приложении.

Читайте также:  птица поет весной какая весной

GCM Network Manager

Замечательная новинка, для использования которой даже не требуется наличие Android M — её можно запускать на любых версиях ОС, вплоть до 2.3!

В вышедшем в конце прошлого года Lollipop появился JobScheduler API. На Android 5.0 и выше этот API отделяет от приложений все аппаратные предупреждения и блокировки засыпания, перенося их на уровень ОС. Это позволяет операционной системе агрегировать все эти события от разных приложений, тем самым уменьшая количество пробуждений и предупреждений, а значит и экономя заряд аккумулятора. Замечательно, вот только работает это на Lollipop и выше (на момент написания статьи, это примерно 12,4% Android-устройств).

Чтобы обеспечить тот же уровень производительности для сетевых соединений, в Google Play Services версии 7.5 добавят GCM Network Manager. Он использует фреймворк, аналогичный JobScheduler, но при этом будет работать на любых устройствах, где установлен Google Play Services (вплоть до Android 2.3, то есть на 99% всех Android-устройств). GCM Network Manager поддерживает такие же сценарии и режимы, что и JobScheduler, а также позволяет ограничивать количество сетевых подключений до тех пор, пока смартфон не будет подключён к зарядному устройству, а также использовать для больших обновлений исключительно Wi-Fi.

Все эти нововведения говорят о том, что Google озаботился производительностью приложений и старается дать разработчикам подходящие инструменты. Также мы теперь можем лучше контролировать поведение приложений ради снижения энергопотребления смартфонов.

Источник

Inactive apps что это

Администратор

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Разработка под Android*,
Блог компании NIX Solutions

По мнению многих разработчиков, в большинстве случаев к слишком быстрому разряду аккумуляторов смартфонов приводит плохая оптимизация приложений. В мае этого года в Google прошла очередная ежегодная конференция Google I/O, на которой было анонсировано много всего интересного для разработчиков. В частности, когда речь зашла об Android M, то одной из центральных тем были именно производительность мобильных устройств и продолжительность работы от аккумулятора. Давайте рассмотрим взглянем на новые функции и инструменты, которые помогут пользователям и инструментам выжать ещё больше из аккумуляторов мобильных устройств.

Это один из главных инструментов в новой ОС для обуздания активности приложений, когда устройство находится в спящем режиме. На смартфонах под управлением Lollipop и более старых версий Android, любое приложение может вывести устройство из сна ради своего обновления, что позволяет поддерживать актуальность данных. Doze анализирует текущее состояние устройства и данные с акселерометра, определяет, когда смартфон не используется, и отправляет его в «глубокий сон». В этом режиме обновление приложений запрещается до тех пор, пока устройство не будет разбужено каким-то иным, более приоритетным событием. В режиме «глубокого сна» отключается сетевая активность, блокировки засыпания, предупреждения и задачи JobScheduler.

Как подсказывает опыт, часто обновляющиеся в фоновом режиме приложения являются одной из главных причин быстрого разряда аккумулятора. И Google придерживается того же мнения. На конференции была приведена информация, что планшеты Nexus 9 с запущенным Doze работали почти в два раза дольше в режиме ожидания.

Чтобы протестировать эту функцию, обновитесь до Android M, а затем с помощью команды ADB отключите зарядку устройства:

adb shell dumpsys battery unplug

Doze может переводить устройство в один из нескольких режимов:

Между этими состояниями можно переключаться вручную:

adb shell dumpsys deviceidle step

Сколько времени нужно на перевод устройства в этот режим?

adb shell dumpsys deviceidle

Это позволяет получить много интересной информации о Doze. К примеру, на Nexus 6 (с включённым дисплеем) были получены следующие результаты:

Whitelist system apps:
com.android.providers.downloads
com.android.vending
com.google.android.gms
Whitelist user apps:
com.facebook.katana
Whitelist app uids:
UID=10012: true
UID=10016: true
UID=10026: true
UID=10100: true
mSigMotionSensor=
mCurDisplay=Display id 0: DisplayInfo<"Built-in Screen", uniqueId "local:0", app 1440 x 2392, real 1440 x 2560, largest app 2413 x 2308, smallest app 1440 x 1356, mode 1, defaultMode 1, modes [], rotation 0, density 560 (494.27 x 492.606) dpi, layerStack 0, appVsyncOff 7500000, presDeadline 12666667, type BUILT_IN, state ON, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS>, DisplayMetrics, isValid=true
mIdleDisabled=false
mScreenOn=true
mCharging=false
mSigMotionActive=false
mState=ACTIVE
mInactiveTimeout=+30m0s0ms

В первой части перечисляются процессы, аккредитованные Doze. Их активность никак не ограничивается. Обратите внимание, что в этот список вручную добавлен Facebook (Настройки —> Аккумулятор —> Facebook —> активировать «Отключить оптимизацию»). Далее идёт раздел с информацией с акселерометра и состоянием дисплея. Эти данные будут использоваться для последующего вывода устройства из состояния «глубокого сна». В данном примере дисплей включен, а значит Doze находится в режиме ACTIVE.

Читайте также:  Что значит симен в гачи

Период неактивности устройства установлен в 30 минут. Если выключить дисплей, этот раздел меняется:

С выключенным дисплеем устройство переходит в режим INACTIVE и может переключиться в режим перехода в «глубокий сон». Таймаут также равен 30 минутам, и, согласно таймеру, из этого периода прошло около 1,5 минут. Вручную переводим устройство в IDLE_PENDING:

Спустя 30 минут пребывания в этом режиме, устройство перейдёт в IDLE. Таким образом, для перехода в «глубокий сон» требуется суммарно 60 минут. Переход:

Через 60 минут сработает триггер, устройство пробудится и отправит все накопившиеся сообщения, инициализирует события и триггеры. Параметр mNextIdleDelay говорит о том, что следующее пробуждение из «глубокого сна» произойдёт через 2 часа. Получается следующая цикличность смен режимов: 1, 2, 4 и 6 часов. То есть самый большой промежуток между пробуждениями составляет 6 часов, 4 раза в сутки.

Как ведут себя приложения, когда устройство выходит из режима «глубокого сна»?

Можете самостоятельно протестировать своё приложение, отправив устройство в «глубокий сон»:

adb shell am set-idle

С помощью той же команды его можно пробудить (введя значение
false вместо true), и посмотреть, как активируются разные процессы, рассылаются и выполняются запросы.

Как видите, Doze является замечательным инструментом для экономии аккумулятора, когда устройство выключено.

Режим ожидания для приложений

В текущих версиях Android любое приложение имеет доступ к радиомодулю, даже в фоновом режиме. Иными словами, какое-нибудь давно скачанное и забытое вами приложение может втихую по несколько раз в день передавать какие-либо данные без вашего ведома. С помощью Doze это можно заблокировать запуск приложений, но они всё-равно смогут запускать процессы и обновляться, когда пользователь включает дисплей устройства. С помощью новой функции режима ожидания для приложений (App standby) можно приложениям, которые не запускались в активном режиме в течение какого-то периода времени (в днях), принудительно назначать режим ожидания. В этом режиме приложениям ограничивается доступ в интернет или запуск каких-либо процессов, пока смартфон не будет подключён к зарядному устройству. Тем самым экономится аккумулятор устройства.

Как работает режим ожидания для приложений? Если выполнить:

adb shell dumpsys usagestats

то можно получить много информации об активности приложений за последний день/неделю/месяц и год.

Встроенный в ОС алгоритм определяет дату последнего запуска приложения, и при необходимости переводит его в неактивный режим. Список таких приложений можно просмотреть, если зайти в меню настроек в пункт “Inactive apps”.

Наверное, все из вас оказывались в ситуации, когда аккумулятор смартфона садится слишком быстро, но непонятно, из-за чего это происходит. Если зайти в Настройки —> Батарея, то можно получить подробную статистику потребления энергии по каждому приложению:

В данном случае основные потребители заряда аккумулятора: ЦПУ (в том числе и в фоновом режиме), сетевой протокол и радиомодуль. Представленная статистика собрана за 28 часов, с момента полной зарядки аккумулятора.

Также в Android M теперь доступно меню, с помощью которого можно «игнорировать оптимизацию». В этом случае отключаются Doze и режим ожидания для приложений. Это позволяет разработчикам тестировать производительность своих приложений как с включённой, так и с выключенной оптимизацией, выясняя, как это влияет на продолжительность работы от аккумулятора. А заодно как быстро устаревают данные в приложении.

GCM Network Manager

Замечательная новинка, для использования которой даже не требуется наличие Android M — её можно запускать на любых версиях ОС, вплоть до 2.3!

В вышедшем в конце прошлого года Lollipop появился JobScheduler API. На Android 5.0 и выше этот API отделяет от приложений все аппаратные предупреждения и блокировки засыпания, перенося их на уровень ОС. Это позволяет операционной системе агрегировать все эти события от разных приложений, тем самым уменьшая количество пробуждений и предупреждений, а значит и экономя заряд аккумулятора. Замечательно, вот только работает это на Lollipop и выше (на момент написания статьи, это примерно 12,4% Android-устройств).

Чтобы обеспечить тот же уровень производительности для сетевых соединений, в Google Play Services версии 7.5 добавят GCM Network Manager. Он использует фреймворк, аналогичный JobScheduler, но при этом будет работать на любых устройствах, где установлен Google Play Services (вплоть до Android 2.3, то есть на 99% всех Android-устройств). GCM Network Manager поддерживает такие же сценарии и режимы, что и JobScheduler, а также позволяет ограничивать количество сетевых подключений до тех пор, пока смартфон не будет подключён к зарядному устройству, а также использовать для больших обновлений исключительно Wi-Fi.

Все эти нововведения говорят о том, что Google озаботился производительностью приложений и старается дать разработчикам подходящие инструменты. Также мы теперь можем лучше контролировать поведение приложений ради снижения энергопотребления смартфонов.

Источник

Inactive apps что это

Прежде чем задавать вопросы прочитайте полностью «шапку» темы, в противном случае ваши посты могут быть оценены как оффтоп и удалены. Если после прочтения шапки у вас остались вопросы, воспользуйтесь формой написания поста в конце статьи. И не забывайте пользоваться поиском по теме, т.к. 80% вновь задаваемых вопросов уже обсуждались.

Читайте также:  что делать если девушке с тобой не интересно

В начале рассмотрим основную и не всегда очевидную причину быстрого разряда аппарата, нарушение его «сна». Дело в том, что после отключения экрана ваш аппарат старается перейти в режим максимального энергосбережения (в так называемый «глубокий сон») в котором уменьшается частота процессора, отключаются «лишние» его ядра, максимально снижается активность приложений и т.п. (энергопотребление в таком режиме может составить всего 1-2% заряда за 8-12 часов). Однако, некоторые приложения/процессы могут выводить устройство из такого сна, пробуждая его своими запросами (так называемыми wakelock’ами), при этом они могут начать загружать процессор, использовать беспроводные сети и геолокацию по своему усмотрению, бесцеременно расходуя энергию при выключенном экране. Поэтому, для начала проверим, есть ли у вашего аппарата проблемы с режимом «сна».

Чтобы понять есть ли у аппарата проблемы с его режимом сна, после дня умеренного использования аппарата в звонилке набираем код *#*#4636#*#* (или пользуемся программой SpareParts), и смотрим пункт «Battery history» («Журнал аккумулятора» или «Журнал сведений о батарее»). Тут сводится вся информация о потреблении устройством энергии.

Активность аппарата (показатель «Running») складывается из двух составляющих, «видимой» и «невидимой».
«Видимая» составляющая формируется из всех действий которые происходят когда экран устройства включён, соответственно она ровна показателю «Screen on».
«Невидимая» составляющая в свою очередь формируется когда экран устройства выключен. В идеале «невидимой» активности вообще не должно быть, если же она есть, значит аппарат что-то будит когда он «спит»и на это тратится энергия заряда.

Таким образом, определить есть ли проблемы с энергопотреблением устройства в режиме «сна» можно следующем образом:
Из показателя «Running» вычитаем показатель «Screen on» и получаем ту самою «Невидимую» составляющую. Если она получается больше 10% (в идеале она должна составлять до 5%), и находится в таком состоянии несколько дней значит надо искать будящую программу способами описанными в пункте 9.

Следует учесть, что прослушивание музыки при выключенном экране, активные мэссенджеры и другие приложения работающий в фоне также увеличивает значение «невидимой» составляющей, поэтому не надо этому удивляться, это нормально. Если же вы знаете, что не используете приложения в фоновом режиме, а «невидимая» составляющая в режиме сна растёт, это верный признак того, что аппарат что-то постоянно «будит» и он не может нормально находится в режиме энергосбережения.

Если тапнуть на верхнюю часть, то мы попадём в пункт с графиками разряда. Большой график показывает динамику снижения уровня заряда аккумулятора (по оси Y- уровень заряда, по оси Х-время).

Вся активность аппарата складывается из двух составляющих, «видимой» и «невидимой».
«Видимая» составляющая формируется из всех действий которые происходят когда экран устройства включён, т.е. когда полоска «Экран включён», а над ней и полоска «Рабочий режим», залиты синим;
«Невидимая» составляющая формируется когда экран устройства выключен, т.е. когда полоска «Рабочий режим» залита синим, а полоска «Экран включён» под ней нет. В идеале «невидимой» активности вообще не должно быть, если же она есть, значит аппарат что-то будит когда он «спит»и на это тратится энергия заряда.

На скриншоте приведённым выше как раз хорошо видна «невидимая» активность. За ночь наблюдений (идеальный период наблюдения, так как графики строятся довольно медленно), часть времени аппарат не спал. Если такая «невидимая» активность появляется слишком часто, продолжительна по времени (составляет более 10% от всей полоски «Рабочий режим») и приводит к значительной потери заряда, значит надо искать будящую программу способами описанными в пункте 9.

Уровень приёма сотовой связи оказывает значительное влияние на сохранение заряда. Чем слабее уровень принимаемого сигнала (меньше делений индикатора антенны на экране) тем больше аппарат тратит энергии на его усиление. Поэтому, в зонах неуверенного приёма сети (к примеру в поездке) лучше отключать радиомодуль аппарата, переводя его в режим «в самолете».

Современные мобильные устройства буквально напичканы всевозможными датчиками, которые естественно, требуют энергии для своей работы. Посмотреть, какие датчики есть в вашем аппарате и сколько они потребляют очень просто, достаточно установить приложение Android System Info, зайти во вкладку System и выбрать пункт Sensor. В первых Android-устройствах обычный акселерометр (датчик, определяющих положение устройства) потреблял до 15 мАч, в современных аппаратах это значение как правило в 100 раз меньше, порядка 0.1-0.15 мАч. Если у вас примерно такие же цифры, то нет особого смысла отключать «автоматическую ориентацию экрана» или «автоматическую яркость» (датчик освещённости), каким-либо значительным образом это не отразится на общем энергопотребление аппарата.
Однако, следует помнить, что многие приложения (прежде всего игры), в которых задействовано управление наклонами аппарата, могут использовать сразу несколько датчиков (акселерометр, гироскоп, датчик вращения, датчик ускорения, датчик ориентации, датчик гравитации и т.д.), что в сумме может дать потребление до 50 мАч.

Уменьшение напряжения процессора (андервольтинг).

Экран является одним из основных потребителей энергии в мобильном устройстве, при этом его потребление зависит от следующих основных параметров: размера и разрешения, типа, выставленного уровня яркости, таймаута подсветки (времени горения подсветки после прекращения активности).

Источник

Сказочный портал