Что означает оптимизация приложений на андроид


Как убрать оптимизацию приложений Android при включении

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

Решаем проблему, почистив кеш

Иногда после перезагрузки телефон попросту виснет или же при каждом включении выполняет запуск оптимизации. Весь процесс может занять до 30 минут, поэтому не очень удобно ждать окончания этого процесса при каждом включении смартфона. Пока приложения не оптимизированы, телефон зависает и работает медленнее. Самое простое решение, если вы хотите отключить оптимизацию при каждом включении, — это чистка кеша.

Произвести ее можно вручную в подразделе «Приложения» в настройках телефона. Также можно скачать специальные программы на Android. Оптимизация приложений может прекратиться после установки и грамотного использования, например, Clean Master.

Если это не помогло, можно почистить cash более радикальным способом через режим восстановления.

Рассмотрим один из вариантов чистки кеша:

  1. Необходимо выключить телефон.
  2. Удерживайте кнопку «Уменьшение звука» и кнопку включения одновременно.
  3. В появившемся окошке выберите подпункт Recovery.
  4. В том меню, которое появится на этот раз, выберите подпункт «Wipe cache partition».
  5. Далее произойдет очистка кеш-памяти. Это займет некоторое время. Никакие важные данные и файлы, которые вы храните на телефоне, не будут удалены.
  6. Телефон нужно будет перезагрузить после завершения процесса. Для этого в меню выберите подпункт «Reboot system now».

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

В зависимости от модели телефона, вход в режим восстановления может различаться. Если комбинация «Кнопка включения + клавиша увеличения громкости» не сработали, значит вам может помочь один из следующих вариантов:

  • Кнопка уменьшения громкости и клавиша для включения устройства.
  • Центральная кнопка и клавиша включения-выключений.
  • Центральная кнопка, кнопка включения и клавиша увеличения громкости.

Если и вышеперечисленные комбинации не подошли, то поищите нужное сочетание клавиш в инструкции или на официальном сайте производителя смартфона.

Чтобы не искать подходящие комбинации клавиш, можно скачать специальные программы на Андроид, автоматически включающие режим «Рекавери». Одна из самых известных программ – Quick Boot. Установите ее на смартфон, а после запуска она автоматически сможет перенести вас в режиме Recovery. Уже в меню приложения можно выбрать нужный раздел. Очистить кеш позволит графа Wipe cache partition. Все остальные подпункты меню тоже называются так же, как и в стандартном Recovery-режиме.

Как отключить оптимизацию: сбрасываем настройки до заводских

Если висящее сообщение снова появляется после каждого перезапуска, при этом чистка кеша не помогла, тогда стоит попробовать возврат устройства к заводским настройкам. Это решение позволит оптимизировать работу телефона.

Помните, что при hard reset гаджету придется удалить все настройки и приложения с телефона, а во все учетные записи придется заходить заново. Сделайте резервную копию всех данных, после чего воспользуйтесь следующей инструкцией:

  1. Выключите устройство, а затем перейдите в режим восстановления. Для этого нужно использовать один из способов, перечисленных выше. Для большинства устройств подойдет метод «Кнопка уменьшения звука + кнопка выключения». Передвигаться между подпунктами меню можно с помощью клавиш, которые регулируют звук.
  2. Далее перейдите к пункту Recovery. Чтобы сделать выбор, нажмите кнопку вкл.
  3. В новом подменю найдите и нажмите «Wipe data/factory reset».
  4. Процесс обнуления настроек займет какое-то время, обычно это затягивается не менее чем на 10 минут, поэтому наберитесь терпения.
  5. Смартфон нужно перезагрузить после завершения процесса. Для этого выберите подпункт Reboot system now.

Сброс настроек должен не только помочь избавиться от постоянной оптимизации приложений после включения, но и сможет дополнительно увеличить скорость работы. Такое решение имеет единственный минус – удаление всех пользовательских файлов и настроек.

Решить этот вопрос можно при помощи Android Backup Service. Создать резервную копию всех своих данных можно при помощи следующих шагов:

  1. Зайдите в раздел «Настройки».
  2. Выберите подменю «Личные данные», а затем нажмите на подраздел «Восстановление и сброс».
  3. Включите «Резервирование данных».
Также вам поможет скопировать все свои данные программа Titanium Backup. Для ее использования нужно получить Root-права. После установки и запуска ПО, найдите среди подменю графу «Резервные копии». В открывшемся интерфейсе выберите графу «Сделать р.к. всего пользовательского ПО и системных данных», а затем нажмите напротив него кнопку «Пуск». Для подтверждения своего решения нажмите на зеленую галочку в верхнем правом углу.

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

Если ничего не помогло

Если проблема не была решена, попробуйте обратиться в сервисный сервис. В некоторых случаях помогает только перепрошивка телефона. Прежде чем нести телефон в ремонт, скопируйте все свои данные (музыку, видео, документы) на другое устройство или выполните резервное копирование.

poandroidam.ru

оптимизация. Обзор программ, инструкция и рекомендации

Неважно, сколько ядер содержит процессор мобильного устройства, и какой объем оперативной памяти есть в гаджете, всегда нужно быть готовым к тому моменту, когда его быстродействие перестанет быть оптимальным. Многие пользователи жалуются на то, что смартфоны и планшеты, выпущенные несколько лет назад, прекращают соответствовать требованиям современных ОС и приложений. Как итог, все приходят к одному решению – оптимизация «Андроида» поможет. Как это сделать, можно узнать из данной статьи.

Способы оптимизации

Во-первых, хочется упомянуть, что пользователями и разработчиками ежедневно создается большое количество программ и утилит, которые, по словам авторов, помогут ускорить работоспособность девайса. На самом деле эффективностью обладают не более 5-10% подобных приложений. Самые эффективные будут указаны ниже.

Кроме этого, существует ряд способов, с помощью которых будет достигнута лучшая оптимизация «Андроида». Эти способы – всего-навсего детальная настройка системы через средства разработчика. «Андроид» – открытая операционная система, именно поэтому вносить изменения может каждый.

«Андроид»: оптимизация с помощью сторонних программ

Итак, с диспетчером разобрались. Настало время поговорить об ускорении работы устройства с помощью сторонних программ. Как и было сказано выше, всего до 10% приложений для оптимизации обладают эффективностью. Дело в том, что чаще всего подобные утилиты просто «очищают» диспетчер задач, и на этом функционал заканчивается. Существуют и более радикальные средства, которые, к примеру, могут очистить ОС от «мусора», накопившегося вследствие работы в интернете и с неизвестными источниками. Чтобы выбрать такую утилиту правильно, проанализировать рейтинг приложений в Play Market. Программа для оптимизации «Андроида» с лучшими показателями количества скачиваний, рейтинга и отзывам пользователей - то, что нужно.

«Диспетчер задач»

Любое устройство, работающее под управлением ОС «Андроид», начиная с версии 4.0 Ice Cream Sandwich, имеет так называемый «Диспетчер задач» или «Диспетчер окон рабочего стола». Он существует для того, чтобы быстро переключаться между приложениями, которые до этого были запущены на устройстве «Андроид». Оптимизация устройства, как утверждают многие, напрямую зависит от нахождения «окон» в данном приложении. Суть в следующем: если «очистить» диспетчер от приложений, находящихся в нем, то девайс заработает быстрее. На самом деле в этом утверждении только часть правды.

Дело в том, что «Диспетчер задач» указывает те приложения, которые использовались на устройстве ранее, но были свернуты или закрыты. В случае если была нажата кнопка «Домой» на устройстве, ОС попытается «свернуть» приложение в фоновый режим. Если у гаджета достаточно оперативной памяти, то программа или игра действительно свернется, оставив запущенным именно тот момент, на котором была свернута. В данном случае «Андроид»-оптимизация напрямую зависит от «выбрасывания» данного приложения из диспетчера. Программа закрыта – оперативная память освобождена, устройство меньше «думает».

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

Лимит фоновых процессов

Из прошлого способа становится ясно, что лучшая программа для оптимизации «Андроида» - сама операционная система с ее встроенными средствами. Данный способ будет оптимален для тех, у кого количество оперативной памяти велико, но нет желания «бодаться» с диспетчером приложений. Итак, краткое описание способа:

  1. Зайти в настройки девайса, в самом низу выбрать пункт «Об устройстве».
  2. В открытом меню найти строчку «Номер сборки» (реже – «Версия MIUI» или другой оболочки, используемой на устройстве).
  3. Семь раз подряд быстро нажать на данный пункт, после чего появится сообщение «Вы стали разработчиком!».
  4. Возвратиться в главное меню настроек, в котором выбрать пункт «Для разработчиков».
  5. Выбрать вкладку «Лимит фоновых процессов», в которой следует указать на максимально разрешенное количество запущенных фоновых процессов.

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

Работа с анимацией

Любое устройство под управлением «Андроида» в первую очередь настроено на работу с использованием анимации и красивых эффектов переходов между различными меню. Но эти процессы тратят драгоценные моменты времени даже на мощных девайсах, не говоря о бюджетных аппаратах. В итоге можно попробовать отключить или ускорить анимацию, чтобы найти компромисс. Для того чтобы сделать это, требуется выполнить пару простых шагов:

  1. Получить доступ к меню разработчика (описание в предыдущем пункте).
  2. В меню «Для разработчиков» найти подпункты «Окно: масштаб», «Переход: масштаб» и «Скорость анимации».

Если нужно отключить абсолютно все эффекты переходов, то следует выбрать значение 0 в каждом пункте, а если желаемый результат – оптимизация «Андроида» без отключения эффектов, то можно выбрать значение 0,5 и ускорить прорисовку анимации.

Еще несколько советов

Очень трудно понять, насколько сложна система «Андроид». Оптимизация ее – отдельный вопрос, ответ на который не всегда удается получить, лишь скачав утилиту или отключив анимацию переходов. Многое зависит от мелочей, которые практически незаметны глазу.

Вот некоторые советы профессионалов, которые могут помочь ускорить работу девайса:

  1. Не стоит использовать «живые» обои, они в прямом смысле убивают быстродействие и энергосбережение.
  2. Стоит избегать использования виджетов или же, в крайнем случае, отключить те, которые используются редко.
  3. Отключение кэшируемых процессов и приложений, которые запущены системой (стоит быть осторожным и не нарушать работу «Андоида» как системы вцелом).
  4. Не захламлять файловую систему ненужными файлами и информацией, по возможности удалять «мусор» и неиспользуемые приложения.

Отслеживание результата

Для того чтобы понять, помогло ли любое из выбранных действий, стоит обратиться к специальным утилитам. Эти утилиты называются бэнчмарки и могут быть скачаны из приложения Play Market. Чаще всего они бесплатны.

Принцип работы бэнчмарков – оценка быстроты выполнения тех или иных процессов устройством в числовом виде. То есть, чем больше число оценки, тем быстрее работает устройство и меньше зависает. Соответственно, перед тем, как начинать проводить «танцы с бубном» над девайсом, следует скачать бэнчмарк и оценить работоспособность устройства. После каких-либо действий, описанных выше, стоит снова запустить тест и посмотреть, дало ли данное действие результат. Полученная информация всегда будет кстати в случае покупки нового девайса.

Хочется отметить, что оптимизация телефона «Андроид» - не самый сложный процесс, практически каждый может собственноручно взяться за него. Именно поэтому перед тем, как ругаться на производителя устройства и говорить, что «врагу такой девайс не пожелал бы», стоит задуматься о попытке собственноручно все исправить.

fb.ru

13 советов по оптимизации Android-смартфона

Сделайте ваш телефон более мощным, полезным и эффективным с помощью этих 13 простых советов

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

1. Удалите ненужные программы

Производители и операторы любят загромождать телефоны предустановленными приложениями, более известными как bloatware. Но только потому, что они установлены по умолчанию, не значит, что нужно жить с ним навсегда. Для удаления мусорного софта, зайдите в системные настройки и найдите «Приложения». Проведите пальцем вправо на вкладку «Все», затем прокрутите список, пока не найдете приложение, от которого хотите избавиться.   Тапните на нужное приложение и нажимайте кнопку «удалить» или «отключить».

2. Сделайте Chrome более эффективным

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

Откройте приложение Chrome, нажмите на иконку меню в верхнем правом углу экрана (или нажмите кнопку меню телефона, если у вас старое устройство) и выберите «Настройки». Выберите опцию «Контроль трафика», затем выберите «Сокращение трафика».

Передвиньте переключатель, чтобы включить эту функцию. Chrome начнет оптимизацию контента для уменьшения объема данных, переданных на телефон.

3. Возьмите под свой контроль главный экран

Домашний экран вашего телефона является отправной точкой для всего, что вы делаете, так почему бы не сделать его таким, как вы хотите?

Кастомный Android-лончер может сделать ваш телефон гораздо более гибким и продуктивным. Он заменяет стандартный домашний экран и экран приложений на другую,  гораздо более настраиваемую среду.

Существует много интересных лончеров, достойных рассмотрения. Один из интересных продуктов — Nova Launcher, который использует стандартную среду Android, но позволяет настроить и улучшить множество деталей. Другие лончеры, такие как EverythingMe и Terrain Home, позволяют переосмыслить опыт работы с домашним экраном с помощью таких функций, как информационные карточки и панели прогнозов.

4. Улучшите способ переключения между задачами   Приходится часто переключаться между приложениями? Стандартная функция Android, позволяющая видеть недавно запущенные приложения, может помочь, но вы можете придать многозадачности больше шарма с помощью менеджера задач от сторонних производителей, например Switchr.

Switchr позволяет использовать жест свайп в от края дисплея телефона для вызова набора часто используемых или недавно использованных приложений. Приложение даёт возможность настроить область срабатывания на экране телефона и точно контролировать, какие приложения появятся в списке. Вы можете настроить вид списка как он работает, что  позволяет создать опыт с учетом ваших личных потребностей рабочего процесса.

5. Сделайте ваш дисплей умнее

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

6. Настройте систему автоматической регулировки яркости вашего телефона

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

7. Используйте лучшую виртуальную клавиатуру

Большинство телефонов Android поставляются с достойной виртуальной клавиатурой, но вы можете найти лучшие варианты.

Магазин Google Play содержит отличный выбор клавиатур сторонних производителей. Например, SwiftKey, сочетающая в себе персональный прогноз следующего слова с превосходной функциональностью и множеством возможностей для настройки. Swype и TouchPal -  другие популярные альтернативы.

8. Сделайте экран блокировки более полезным

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

9. Возьмите под свой контроль уведомления   Система уведомлений Android может быть невероятно удобной — до тех пор, пока множество приложений не переполнит панель уведомлений ненужной информацией. Android имеет встроенный механизм для укрощения таких надоедливых программ. Если вы не можете найти возможность отключения уведомлений в самом приложении, перейдите в  секцию «Приложения» системных настроек вашего телефона. Просмотрите список, пока не найдете нужное приложение, выберите его, а затем снимите флажок «Включить уведомления».

Приложение больше не будет вам надоедать.

10. Не позволяйте важному письму остаться незамеченным

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

Как только сохраните настройки фильтра, перейдите в раздел настроек приложения Gmail и выберите свою учетную запись из появившегося списка. Выберите «Управление ярлыками» и нажмите на ярлык, который вы только что создали.

Теперь нажмите «Синхронизация сообщений» и измените его значение на «синхронизировать за последние 30 дней». Установите флажок для «маркированные уведомления» и нажмите на опцию «Звук», чтобы выбрать звук, который будет воспроизводиться при получении важного сообщения.   Повторите процедуру, чтобы создать несколько ярлыков — каждый с собственным набором пусковых условий — с различными звуками для различных типов важной электронной почты.

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

Вот как можно обойти это ограничение: в настройках браузера Chrome для Android найдите «Специальные возможности». Установите флажок «Принудительно изменять масштаб».   Вот и все — теперь вы можете использовать зум для увеличения как вам будет угодно, даже на сайте, который изначально это не позволяет. Хватит щуриться.

12. Используйте интеллект вашего телефона

Пожалуй, самая сильная сторона Android в том, чтобы ваш телефон может вести себя контекстуально умнее. Может быть, вы хотите, чтобы ваше устройство знало когда вы дома, и активировало Wi-Fi для подключения к домашней сети. Или может быть, вы хотите заблокировать экран и переключить телефон в тихий режим, когда кладёте его лицевой стороной вниз. Возможности практически безграничны. Для использования контекстного интеллекта, есть приложение под названием Agent. В Agent есть рецепты для основных задач, таких как изменение поведения вашего телефона на основе времени суток или текущих событий календаря. Он может обнаружить, когда вы за рулем, прочитать текстовые сообщения вслух и поможет ответить, не касаясь телефона.

13. Поставьте возможности обучения на ступеньку выше

Если вы хотите пойти ещё дальше и стать настоящим гиком, посмотрите на приложение под названием Tasker. Оно позволяет создавать массовый спектр профилей с условиями, контролирующими как ваш телефон реагирует на основе изменения почти любой переменной, которую вы можете себе представить — расположение, уровень заряда батареи, физическая ориентация телефона, активное приложение, или почти все остальное, что телефон может обнаружить. Можно использовать Tasker для маршрутизации звонков на разные номера, когда вы находитесь в определенных местах. Интерфейс Tasker не очень простой, но если вы достаточно технически подкованы и готовы потратить время, чтобы понять его, приложение поможет сделать ваш телефон более мощным.

www.npsod.ru

Как в 2-3 раза ускорить Android и сократить расход батареи

Описаны более 10-ти способов по увеличению производительности планшетов и смартфонов под управлением Android, которые для удобства объединены в 3 шага, доступных каждому.

Планшетник либо смартфон на базе OS Android начинает подтормаживать? Это ещё не повод бежать в магазин за новым. В ряде случаев его можно «подстегнуть». Рассмотрим простые шаги как ускорить андроид, не требующие от владельца больших знаний.

В 2-х первых шагах, предварительном и основном, поговорим об усовершенствовании софта. В 3-м, дополнительном, узнаем о доступной каждому модернизации «железа».

Шаг 1. Предварительные настройки Android

Этап заключается в настройке режима электропитания. Чаще всего встречаются 2 вида меню установки режима электропитания:нужно выбрать режим «Высокая производительность»илинужно выбрать режим «Производительность»В случае других меню нужно ориентироваться на похожие пункты. В результате такой оптимизации электропитания ускорится отклик системы и приложений Adndoid. Однако батарея начнет разряжаться быстрее.

В Android 4.0 + требуется ускорить работу графической подсистемы:установить флажок в пункте «Ускорить работу GPU» (Ускорение при помощи GPU)При этом графический процессор подстроится под многие игры. Но некоторые приложения могут отказаться работать. В каких-то устройствах перечисленных меню может не оказаться. Возможно, завод-изготовитель уже их оптимизировал.

Часто причиной плохой работы гаджета является элементарное «замусоривание» операционной системы. И тут, каким бы мощным процессором и громадной оперативной памятью не обладало устройство, нормальной работы от него не дождаться. Как очистить Android? Здесь поможет шаг 2.

Шаг 2. Основные настройки ускорения Android

Чтобы облегчить работу системы, необходимо делать следующее:

  • Устанавливайте самые быстрые и легкие программы. Перед установкой читайте отзывы.
  • Избавляйтесь от ненужных программ. Они отнимают память, а при необходимости их легко восстановить через Google Play.
  • Ставьте лишь необходимые программы. Лишние занимают драгоценное место в системе и замедляют её.
  • Снимите автозапуск неиспользуемых служб:

или

Останавливаем ненужные. Чтобы они не запускались после перезагрузки, требуется отключить их через специальное приложение – менеджер процессов. В Google Play таких очень много. После избавления от лишних служб система начнёт быстрее загружаться и станет шустрее.

В Android 2.3 и выше нужно снять синхронизацию с сервисами, которыми не пользуетесь:отключаем синхронизацию со всеми лишними сервисами.Так, в аккаунте Google не повредит отключить синхронизацию контактов, Gmail, Picasa, календаря и подобных сервисов. Когда не используются никакие сервисы, флажок «Автосинхронизация» в окне «Аккаунты и синхронизация» следует сбросить.

Настройки аккаунтов в Android

Нужно снять автообновление приложений в Google Play. Это изредка можно делать и вручную. Такая процедура экономит 3G/GPRS трафик, заряд батареи и облегчает систему. Для отключения автообновления приложений следует зайти в:

и отключить флажки с пунктов «Уведомления» и «Обновлять автоматически». Заодно поднять флажок «Обновление только через Wi-Fi», что сбережет трафик и продлит работу от аккумулятора.

Желательно отключить анимацию:пункт «Без анимации»или, найти пункты связанные с анимацией и ставим значения «Отключение анимации» или «Без анимации»Для ускорения андроида живые обои следует убрать со стартового экрана и из системы. Также удалите со стартового экрана неиспользуемые виджеты и ярлыки. В Google Play отключить автоматическое размещение виджетов и ярлыков можно так:

Отключите GPS и геолокацию

Они постоянно «висят» в фоне и нещадно разряжают батарею. А часто ли ими пользуетесь? Нет?

Тогда: и снимаем флажки со всех пунктов

Регулярно опустошаем кэш приложений и браузера

Это нужно для очистки системы от лишнего мусора, желательно делать раз в месяц:, зайти в свойства выбранного приложения и жмем «Очистить кэш»Также применяйте Менеджер задач. В Android установлен Менеджер задач, который позволяет завершить программы, выгрузив их из оперативной памяти.

Шаг 3. Дополнительная модернизация устройства на базе Android

На многих Андроид-гаджетах предусмотрено хранение информации на внешних картах памяти. От их быстродействия зависит и скорость аппарата в целом.

Быстрота запись/чтение MicroSD маркируется по классам (2, 4, 6, 10). Цифра означает скорость в мегабайтах в секунду. К устройствам изначально продают карты классом до 6. Карты класса 6 и менее — медленные и сбавляют скорость работы системы Android. MicroSD карты класса 10 и карты нового формата UHS (Ultra High Speed) предпочтительнее. Производительность андроида существенно ускорится. Только следует вначале уточнить в инструкции к устройству, поддерживаются ли такие форматы карт памяти.

Как видите, улучшить характеристики планшета либо смартфона под управлением операционной системы Android несложно даже простыми способами. Не потребуется много времени или серьёзных вложений. Зато многие игры и приложения начнут работать быстрее. В чём вам смогут позавидовать счастливые владельцы даже свежих моделей.

it-like.ru

Советы по оптимизации использования памяти приложениями Android

Выделение и освобождение памяти в Android всегда достигались высокой ценой. Китайская пословица гласит: «После бедности легко привыкнуть к роскоши, но после роскоши трудно привыкнуть к бедности». Эта фраза вполне применима и к использованию памяти приложениями.

Представим себе наихудший возможный сценарий: идет компиляция приложения с миллионами строк кода, и внезапно происходит сбой из-за нехватки памяти (ООМ). Вы начинаете отлаживать приложение и анализировать файл hprof. Если повезет, то вы сможете найти причину сбоя и устранить проблему нехватки памяти. Но иногда везение обходит вас стороной, вы обнаруживаете, что множество мелких переменных и временных объектов выделяет память таким образом, что не существует простого способа исправить эту проблему. Это означает, что придется перестраивать код, что всегда связано с потенциальным риском, и лишь ради того, чтобы сэкономить несколько килобайт, а иногда и несколько байт памяти.

В этой статье описывается управление памятью в Android и поясняются различные аспекты и особенности системы управления памятью. Кроме того, рассматриваются такие вопросы, как более эффективное управление памятью, обнаружение и устранение утечек памяти, анализ использования памяти.

Управление памятью в Android

В Android используются пейджинг и mmap вместо пространства подкачки. Это означает, что память, затронутую вашим приложением, невозможно использовать до высвобождения всех ссылок.

В виртуальной машине Dalvik размер кучи для процессов приложений ограничен. Приложения начинают работу с 2МБ, а максимальный размер выделения, называемый largeHeap, составляет до 36МБ (в зависимости от конфигурации конкретного устройства). Примеры приложения с большой кучей: редакторы фото и видео, камера, галерея, домашний экран.

Фоновые процессы приложений в Android хранятся в кэше LRU (кэш наиболее давно использованных элементов). Когда в системе заканчивается память, система завершает процессы согласно стратегии LRU, но при этом учитывает, какое приложение занимает больше всего памяти. В настоящее время предельное количество фоновых процессов равно20 (в зависимости от конфигурации конкретного устройства). Если нужно, чтобы приложение дольше оставалось в фоновом режиме, отмените выделение ненужной памяти перед переключением в фоновый режим, тогда Android с меньшей вероятностью выдаст сообщение об ошибке или даже завершит работу этого приложения.

Как улучшить использование памяти

Android — самая популярная и самая распространенная в мире мобильная платформа. Миллионы разработчиков стремятся создавать для Android стабильные масштабируемые приложения. Вот перечень советов и рекомендаций по повышению эффективности использования памяти в приложениях Android.

1. Будьте осторожны при использовании «абстракций». Впрочем, с точки зрения архитектуры абстракция может помочь в достижении более высокой гибкости. В мобильных решениях у абстракции может быть побочный эффект, который заключается в выполнении добавочного кода, из-за чего расходуется больше ресурсов ЦП и памяти. Использовать абстракцию следует лишь в том случае, если она дает вашему приложению ощутимое преимущество.

2. Не используйте enum. По сравнению с обычными статическими константами при использовании enum выделятся вдвое больше памяти.

3. Попробуйте использовать оптимизированные контейнеры SparseArray, SparseBooleanArray и LongSparseArray вместо HashMap. HashMap выделяет объект вхождения при каждом сопоставлении. Это очень неэффективно с точки зрения памяти и с точки зрения производительности, поскольку сопровождается множеством операций автоматической упаковки и распаковки. Контейнеры наподобие SparseArray сопоставляют ключи с простыми массивами. Но помните, что такие оптимизированные контейнеры непригодны для большого количества элементов; при выполнении действий добавления, удаления и поиска они медленнее, чем Hashmap, если набор данных содержит несколько тысяч записей.

4. Не создавайте ненужные объекты. Не выделяйте память для краткосрочных временных объектов, если можно обойтись без этого, а чем меньше создано объектов, тем реже происходит сборка мусора.

5. Проверяйте доступность кучи вашего приложения. Вызывайте ActivityManager::getMemoryClass(), чтобы запросить, какой объем кучи (в МБ) доступен для приложения. При попытке выделить больше памяти, чем доступно, возникнет исключение OutofMemory. Если приложение объявляет largeHeap в AndroidManifest.xml, то можно вызвать ActivityManager::getLargeMemoryClass() для запроса предполагаемого размера большой кучи.

6. Скоординируйте работу с системой с помощью обратного вызова onTrimMemory(). Используйте ComponentCallbacks2::onTrimMemory(int) в Activity/Service/ContentProvider для постепенного высвобождения памяти согласно последним ограничениям системы. Благодаря onTrimMemory(int) повышается общая скорость отклика системы, но процессы дольше поддерживаются в активном состоянии.

Когда возникает событие TRIM_MEMORY_UI_HIDDEN, это означает, что весь пользовательский интерфейс вашего приложения был скрыт и нужно высвободить ресурсы пользовательского интерфейса. Когда приложение работает в режиме переднего плана, могут появиться сообщения TRIM_MEMORY_RUNNING[MODERATE/LOW/CRITICAL], а в фоновом режиме — TRIM_MEMORY_[BACKGROUND/MODERATE/COMPLETE]. Можно освободить память от второстепенных ресурсов на основе стратегии высвобождения памяти при ее нехватке.

7. Используйте службы с осторожностью. Если служба нужна для выполнения задания в фоновом режиме, поддерживайте ее в запущенном состоянии, только если она фактически выполняет задачу. Попробуйте сократить время работы службы с помощью IntentService, поскольку в этом случае служба закончит работу после завершения обработки цели. Использовать службы следует с осторожностью: никогда не оставляйте запущенную службу, если она не нужна в данный момент. В наихудшем случае снизится производительность всей системы, пользователи попытаются определить причину этого, найдут ваше приложение и удалят его (если это возможно).

Если же вы создаете приложение, которое должно быть запущено в течение длительного периода времени, например службу музыкального проигрывателя, его следует разделить на два процесса: один для пользовательского интерфейса, а другой для фоновой службы. Для этого нужно задать свойство службы android:process в файле AndroidManifest.xml. Ресурсы в процессе пользовательского интерфейса можно высвобождать после скрытия приложения, а фоновая служба воспроизведения продолжит работать. Помните, что процесс фоновой службы ни в коем случае не должен взаимодействовать с пользовательским интерфейсом. В противном случае объем потребляемой памяти может вырасти вдвое или втрое!

8. Используйте внешние библиотеки с осторожностью. Зачастую внешние библиотеки создаются для немобильных устройств, поэтому в Android они могут быть неэффективны. Принимая решения об использовании той или иной внешней библиотеки, обязательно учтите трудозатраты, необходимые для переноса этой библиотеки на мобильную платформу и для ее оптимизации. Если в какой-либо библиотеке используется лишь одна-две функции из тысяч доступных, то лучше написать код этих функций самостоятельно.

9. Используйте растровые рисунки правильного разрешения. Загружайте растровые рисунки нужного разрешения или уменьшайте разрешение, если у исходных растровых рисунков оно слишком большое.

10. Используйте Proguard* и zipalign. Средство Proguard удаляет неиспользуемый код и маскирует классы, методы и поля. При этом код становится более компактным, снижается количество требуемых распределяемых страниц оперативной памяти. Средство zipalign перестраивает APK-файл. Если средство zipalign не запущено, потребуется больше памяти, поскольку из APK невозможно распределять файлы ресурсов.

Как избежать утечек памяти

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

1. Закрывайте курсор после запроса базы данных. Если нужно, чтобы курсор был открыт в течение длительного времени, пользуйтесь им с осторожностью и закрывайте его сразу же после завершения задачи базы данных.

2. Не забудьте вызвать unregisterReceiver() после вызова registerReceiver().

3. Избегайте утечки контекста. Если объявить статическую переменную Drawable в Activity, а затем вызвать view.setBackground(drawable) в onCreate(), то после поворота экрана будет создан новый экземпляр Activity, а отменить выделение памяти прежнему экземпляру Activity будет невозможно, поскольку представление задано как обратный вызов и представление ссылается на Activity (Context). Утечка в экземпляре Activity означает утечку значительного объема памяти с высокой вероятностью возникновения ошибки «Недостаточно памяти».

Избежать такой утечки можно двумя способами.

  • Не храните долгосрочные ссылки на context-activity. Жизненный цикл ссылки на действие должен быть таким же, как у самого действия.
  • Попробуйте использовать context-application вместо context-activity.

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

5. Будьте осторожны при работе с потоками. Потоки в Java находятся вне сборки мусора. Другими словами, виртуальная машина Dalvik (DVM) хранит жесткие ссылки на все активные потоки в системе выполнения, поэтому все потоки, оставшиеся запущенными, не попадают под действие сборки мусора. Потоки в Java сохраняются в памяти до тех пор, пока либо они не будут закрыты явным образом, либо весь процесс не будет завершен системой Android. В среде приложений Android поддерживается множество классов, предназначенных для повышения удобства фоновой работы с потоками.

  • Используйте Loader вместо потока для выполнения краткосрочных асинхронных фоновых запросов вместе с жизненным циклом Activity.
  • Используйте Service и передавайте результаты в Activity с помощью BroadcastReceiver.
  • Используйте AsyncTask для краткосрочных операций.

Как проанализировать использование памяти

Для получения дополнительных сведений о статистике использования памяти в интерактивном и автономном режимах можно просмотреть основной журнал Android с помощью команды logcat в Android Debug Bridge (ADB), информацию дампа памяти для определенного имени пакета или с помощью других инструментов, таких как Dalvik Debug Monitor Server (DDMS) и Memory Analyzer Tool (MAT). Вот краткое описание анализа использования памяти вашим приложением.

1. Для получения дополнительных сведений о статистике использования памяти в интерактивном и автономном режимах можно просмотреть основной журнал Android с помощью команды logcat в Android Debug Bridge (ADB), информацию дампа памяти для определенного имени пакета или с помощью других инструментов, таких как Dalvik Debug Monitor Server (DDMS) и Memory Analyzer Tool (MAT). Вот краткое описание анализа использования памяти вашим приложением.

  • Причина сборщика мусора. Что запустило сборку мусора и какого типа эта сборка? Причины могут быть следующими.
    • §GC_CONCURRENT: одновременная сборка мусора, высвобождающая память по мере заполнения кучи.
    • §GC_FOR_ALLOC: сборка мусора, которая запускается из-за того, что приложение попыталось выделить память при уже полной куче, поэтому системе пришлось остановить приложение и вернуть память.
    • §GC_HPROF_DUMP_HEAP: сборка мусора, возникающая при создании файла HPROF для анализа кучи.
    • §GC_EXPLICIT: запущенная явным образом сборка мусора, например при вызове gc() (чего следует избегать; нужно полагаться на то, что сборщик мусора сам запустится в нужный момент).
  • Освобожденный объем: объем памяти, освобожденный после этой сборки мусора.
  • Статистика кучи: процент свободной памяти и (количество действующих объектов/общий размер кучи).
  • Статистика внешней памяти: внешняя выделенная память на уровне API 10 и ниже (объем выделенной памяти/предел, по достижении которого начнется сборка мусора).
  • Время приостановки: у более крупных куч время приостановки будет больше. При одновременной приостановке отображаются две приостановки: одна в начале сборки, а другая ближе к окончанию.

Чем больше журнал сборщика мусора, тем больше операций выделения и отмены выделения памяти произошло в вашем приложении. Это, в свою очередь, означает снижение удобства пользователей.

2. Используйте DDMS для просмотра обновлений кучи и отслеживания выделения памяти.

Удобно проверять выделение кучи в реальном времени для определенного процесса с помощью DDMS. Попробуйте поработать с приложением и следите за обновлением выделения кучи на вкладке Heap. Это поможет определить, какие действия используют слишком много памяти. На вкладке Allocation Tracker отображаются все недавние выделения памяти с указанием типа объектов, потока, класса, файла и строки. Дополнительные сведения об использовании DDMS для анализа кучи см. в разделе справочных материалов в конце этой статьи. На следующем снимке экрана показана программа DDMS с текущими процессами и статистикой кучи памяти для определенного процесса.

3. Просмотр общего выделения памяти.

С помощью команды adb — adbshelldumpsysmeminfo <имя_пакета>— можно просмотреть всю текущую выделенную память приложения (в КБ).

Как правило, следует обращать внимание только на столбцы Pss Total и Private Dirty. В столбце Pss Total включено выделение всех объектов Zygote (с установкой весового коэффициента согласно их совместному использованию процессами в соответствии с определением PSS выше). В столбце Private Dirty — объем фактической оперативной памяти, предоставленной куче приложения, выделенным областям и всем страницам Zygote, измененным с момента ответвления процесса приложения из объекта Zygote.

Кроме того, в столбце ViewRootImpl отображается количество корневых представлений, действующих в вашем процессе. Каждое корневое представление связано с окном, поэтому это поможет выявить утечки памяти, связанные с диалоговыми или другими окнами. На вкладках AppContexts и Activities отображается количество объектов Context и Activity приложения, используемых в вашем процессе. Это может пригодиться для выявления утечек объектов Activity, к которым невозможно применить сборку мусора из-за наличия в них статических ссылок, что бывает довольно часто. С такими объектами зачастую связано множество других ресурсов, и так можно удобно отслеживать крупные утечки памяти.

4. Сохраните дамп кучи и проанализируйте его в программе Eclipse Memory Analyzer Tool (MAT).

Записать дамп кучи можно непосредственно с помощью DDMS, а для более точных результатов можно вызвать Debug::dumpHprofData() в коде приложения. Затем потребуется применить программу hprof-conv для получения преобразованного файла HPROF. На следующем снимке экрана показан результат анализа памяти в МАТ.

Заключение

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

Справочные материалы

Об авторе

Бин Чжу (Bin Zhu) — инженер по разработке приложений в команде Intel® Atom™ Processor Mobile Enabling Team в подразделении Developer Relations Division отдела Software and Solutions Group (SSG). Он отвечает за поддержку приложений Android на процессорах Intel Atom, а также занимается технологиями мультимедиа на платформах Android x86.

Дополнительные сведения об оптимизации компиляторов см. в нашем уведомлении об оптимизации.

apps4all.ru

Оптимизация Андроид - мануал в картинках

Довольно часто, на нашем сайте, посетители спрашивают как обновиться до последней версии Андроида, и еще чаще, оказывается, что обновиться не реально по ряду причин, остается лишь довольствоваться тем, что есть или оптимизировать Android имеющейся версии, сделав его шустрее и стабильнее.

Уже созданы программы для оптимизации Андроид, но ничто так не поможет Вам, как прямые руки.

Основные способы оптимизации Андроид рассмотрим в этой статье, если не поможет, пишите в комментариях, попробуем вместе другие, не столь популярные и не столь безопасные варианты.

Самый действенный способ оптимизации Android устройства

Начнем с самой первой ошибки, которую совершают все пользователи Андроид устройств даже не задумываясь о том, что это может сказаться на скорости работы устройства, или даже на стабильности его работы.

Ошибка заключается в установке на телефон уймы приложений, потребность в использовании которых крайне низка или отсутствует вовсе — у вас на смартфоне есть хоть одно приложение, которым вы пользуетесь меньше раза в неделю? оно действительно вам необходимо?

На самом деле часто встречаются случаи, когда на телефоне стоит около 10 приложений о существовании которых, пользователь даже не знает.

Каждое установленное приложение не просто лежит мертвым грузом на флешке телефона, если вы им не пользуетесь, приложение ЖИВЕТ своей жизнью в операционной системе android  потребляя ресурсы — проверяет обновления или ожидает событий при которых необходимо активироваться.

Несколько таких приложений не должны повлиять на работу устройства (если у вас минимум 1gb оперативки и 2 ядра), но десяток неиспользуемых приложений (в том числе игры) уже дадут о себе знать затормаживая ваше устройства в моменты пиковых нагрузок (вызов, разговор по скайпу, съемка видео — если есть «глюки» или «тормоза», это первый звоночек перебора с приложениями).

Самые популярные приложения (не считая произведений компании Microsoft — skype и др) пытаются экономно расходовать ресурсы телефона, но большая часть приложений вообще не заточена под какую-либо экономию ресурсов, в этой связи первый совет — старайтесь не пользоваться (удалить с устройства) не популярными приложениями с низким рейтингом, малым количеством установок или плохими отзывами.

Если же после выполнения первого совета (при полностью заряженной батарее, после перезагрузки) ваш телефон все еще подвисает при звонках или серфинге в интернете (не нужно запускать игры и жаловаться что телефон подвисает 🙂 80% телефонов на андроиде даже не рассчитаны на игры), значит необходимо выполнить следующие шаги.

Этапы оптимизации Андроид устройства

  • Зайдите в настройки телефона — (Settings)
  • Выберите пункт меню — Приложения (Apps)
  • Вы попали в список загруженных приложений, проведите пальцем по экрану справа налево
  • Вы попали в список запущенных приложений (RUNNING или ТОЛЬКО ЗАПУЩЕННЫЕ), слева иконка приложения, его название, количество процессов работающих прямо сейчас, справа цифры потребления оперативной памяти (пример: 12MB)
  • Просмотрите список, вы обнаружите множесто запущенных процессов, в том числе технических, которые обеспечивают работу самой операционной системы, с ними нет смысла бороться, если у вас nexsus и нужно бороться если у вас samsung (во втором случае, производитель ставит на телефон кучу своих собственных программ, через которые он продает пользователям свои приложения, сервисы, услуги — способ дополнительной монетизации).
  • Запишите в текстовый файл на компьютере или в блокнот телефона друга, названия всех приложений, которые потребляют более 10MB оперативной памяти, кроме тех, которые в своем названии содержат слова — «com.», «Google», «Settings» «Service» (это служебные процессы, которые в 90% случаев необходимы для стабильной работы аппарата)
  • Теперь выходите из списка работающих приложений и идите в список приложений, откуда вы обычно их удаляете (не путать с рабочим столом, который появляется при тапе на иконку домика — средняя клавиша телефона, если это не samsung)
  • Читайте список, глядя на приложения и думайте, зачем вам это приложение, которое жрет столько метров памяти вашего телефона, может быть вы сможете прожить без него?
  • Если решились — удаляйте.
  • После того как, удалите несколько приложений, попробуйте перезагрузить телефон (это не обязательно, можно зайти в список приложений и снять все запущенные на фоне)
  • Проверяйте вызов, серфинг по интернету, камеру, карты — все еще тормозит?

Если все вышеперечисленные рекомендации не дали результата, сбросьте список оставшихся программ, с указанием количества потребляемой памяти и модели устройства (телефон, смартфон, планшет), я отвечу с расписанной индивидуальной рекомендацией.

androidmir.org

Работают ли техники оптимизации Android

Содержание статьи

Блуждая по форумам и разного рода сайтам, посвященным Android, мы постоянно сталкиваемся с советами, как увеличить производительность смартфона. Одни рекомендуют включить swap, другие — добавить специальные значения в build.prop, третьи — изменить переменные ядра Linux. Подобного рода рецептов в разных вариантах можно найти огромное количество, что на XDA, что на 4PDA. Но работают ли они на самом деле?

 

Введение

Пользуясь самыми разными *nix-системами на протяжении последних десяти лет, я всегда удивлялся, с каким упорством некоторые, казалось бы, грамотные пользователи смартфонов пытаются впихнуть общественности свои идеи оптимальной настройки Android и лежащего в его основе ядра Linux. И ладно бы дело ограничивалось легким тюнингом подсистемы управления виртуальной памятью или включением экспериментальных опций. Нет, обычно нам предлагают применить длиннющие скрипты, изменяющие буквально каждую переменную ядра, перемонтирующие файловые системы с разными странными опциями, включающие swap, активирующие различные системные демоны и выполняющие еще миллиарды различных операций.

Нет, ну можно, конечно, предположить, что ядро Linux, Android и фирменные прошивки для смартфонов разрабатывают безграмотные идиоты, работу которых необходимо кардинальным образом переделывать, но на практике почему-то оказывается, что самые известные инструменты тюнинга, опубликованные на XDA, — это не что иное, как сборная солянка из огромного количества разрозненных рекомендаций, придуманных непонятно кем и неизвестно зачем. Абсурд ситуации доходит того, что в этих инструментах можно обнаружить строки, без изменений скопированные из скриптов для увеличения производительности Linux-сервера в условиях высоких нагрузок (я не шучу, взгляни на содержимое известного скрипта ThunderBolt!).

В целом ситуация более чем запутанная. Все советуют всё, никто не советует ничего, а те, кто что-то понимает, сидят и, попивая чай, смеются над происходящим балаганом. Но попробуем все-таки разгрести всю эту кашу.

Pimp My Rom — один из самых известных инструментов тюнинга Android

 

Swap

Начнем со swap — самой абсурдной идеи из всех, что только можно придумать для применения в смартфонах. Ее смысл в том, чтобы создать и подключить файл подкачки, за счет чего удастся освободить полезное пространство в оперативной памяти. Сама по себе идея, конечно, здравая, но только если речь идет о сервере, которому интерактивность никуда не упирается. На смартфоне регулярно используемый файл подкачки приведет к неиллюзорным лагам, возникающим вследствие промахов мимо кеша, — достаточно представить, что будет, если приложение попытается отобразить одну из своих пиктограмм, а она окажется в свопе, который придется вновь загружать с диска, предварительно освободив место путем помещения в своп данных другого приложения. Ужас.

Некоторые юзеры могут возразить, что на самом деле после включения swap никаких проблем не возникает, но за это надо благодарить механизм lowmemorykiller, который регулярно убивает особо раздувшиеся и давно не используемые приложения. Благодаря ему девайс с 1 Гб памяти может никогда и не дойти до необходимости сброса данных в своп. Он же и является причиной того, почему в отличие от Linux-десктопа в Android своп не нужен.

Вердикт: очень глупая идея, реализация которой чревата серьезными лагами.

 

zRAM

Swap действительно очень медленный, и даже на десктопе его существование зачастую неоправданно, но что, если обмануть систему? Создадим виртуальный диск прямо в оперативке с встроенной функцией сжатия данных, подключим его как swap — и вуаля. Функция сжатия данных довольно дешева даже для современных мобильных процессоров, поэтому мы сможем расширить размер оперативки практически без потерь производительности.

Идея настолько правильная, что даже Google рекомендует применять zRAM для основанных на KitKat устройствах в том случае, если объем оперативки не превышает 512 Мб. Загвоздка только в том, что способ работает лишь для современных бюджетников, то есть устройств, основанных на многоядерных бюджетных процах от какой-нибудь MTK и 512 Мб оперативки. В этом случае поток шифрования можно вынести на отдельное ядро и вообще не париться о производительности.

На устаревших устройствах с одним ядром, для которых «гуру форумов» и рекомендуют применение данной технологии, мы вновь получим лаги, причем в довольно большом количестве. То же, кстати, относится и к технологии KSM (Kernel SamePage Merging), которая позволяет объединять одинаковые страницы памяти, освобождая таким образом пространство. Она также рекомендована Google, но на старых девайсах приводит к еще большим лагам, что вполне логично, учитывая постоянно активный ядерный поток, который непрерывно ходит по памяти в поисках дубликатов страниц (а так ли много этих дубликатов на самом деле?).

Вердикт: зависит от устройства, в большинстве случаев замедляет систему.

 

Seeder

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

Если вкратце, то баг состоял в том, что некоторые высокоуровневые компоненты среды исполнения Android активно использовали файл /dev/random для получения энтропии/соли. В какие-то моменты буфер /dev/random опустошался, и система оказывалась заблокирована до момента его заполнения необходимым количеством данных. А так как заполнялся он тем, что поступало с разных датчиков, кнопок и сенсоров смартфона, то времени на эту процедуру уходило столько, что пользователь успевал заметить лаг.

Для решения этой проблемы автор Seeder взял Linux-демон rngd, скомпилировал его для Android и настроил так, чтобы он брал случайные данные из гораздо более быстрого (но и намного более предсказуемого) /dev/urandom и каждую секунду сливал их в /dev/random, не позволяя последнему истощиться. Как результат — система никогда не испытывала недостатка в энтропии и спокойно работала.

Данный баг был закрыт Google еще в Android 3.0, и, казалось бы, нам незачем вспоминать о Seeder. Но дело в том, что приложение с тех пор активно развивалось и даже сегодня рекомендуется многими «экспертами» для применения. Более того, у приложения появилось несколько аналогов (например, sEFix), а многие создатели скриптов/инструментов для ускорения до сих пор включают подобную функциональность в свои творения. Иногда это тот же самый rngd, иногда — демон haveged, иногда просто симлинк /dev/urandom на /dev/random.

sEFix — один из наследников Seeder

Все, кто пробовал, наперебой кричат об эффективности решения, однако, если верить Рикарду Серкейре (Ricardo Cerqueira) из компании Cyanogen, в современных версиях Android /dev/random используется всего тремя компонентами: libcrypto (для шифрования SSL-соединений, генерации ключей SSH и так далее), wpa_supplicant/hostapd (для генерации WEP/WPA-ключей) и несколькими библиотеками для генерации случайных ID при создании файловых систем ext2/3/4.

Эффективность приложения в современном Android, по его мнению, связана вовсе не с пополнением пула /dev/random, а с тем, что rngd постоянно пробуждает устройство и заставляет его повышать частоту процессора, что позитивно сказывается на производительности и негативно на батарее.

Вердикт: плацебо.

 

Odex

Стоковые прошивки смартфонов всегда одексированы. Это значит, что наряду со стандартными для Android пакетами приложений в формате APK в каталогах /system/app/ и /system/priv-app/ (начиная с KitKat) также находятся одноименные файлы с расширением odex. Они содержат так называемый оптимизированный байт-код приложения, уже прошедший через верификатор и оптимизатор виртуальной машины и записанный в обособленный файл (это делается с помощью утилиты dexopt).

Смысл существования файлов odex в том, чтобы разгрузить виртуальную машину и таким образом ускорить запуск приложений (стоковых). С другой стороны, файлы odex мешают вносить в прошивку модификации, создают проблемы с обновлением, и по этой причине многие кастомные ROM’ы (включая CyanogenMod) распространяются без них. Вернуть (точнее, сгенерировать) файлы odex можно разными способами, в том числе с помощью простых утилит/скриптов вроде Odexer Tool. Пользоваться ими легко, и многие «эксперты» советуют это делать.

Проблема только в том, что это чистейшее плацебо. Не обнаружив odex-файлов в каталоге /system, система сама создаст их при следующей загрузке и поместит в каталог /system/dalvik-cache/. Именно этим она занимается, когда при загрузке новой прошивки на экране появляется сообщение «Идет оптимизация приложений…». В отношении приложений из маркета это тоже, кстати, работает. Но на этапе установки софта.

Вердикт: плацебо.

 

Твики lowmemorykiller

Реализация многозадачности в Android сильно отличается от других мобильных ОС и основана на классической модели. Приложения могут спокойно работать в фоне, в системе нет никаких ограничений на их количество, функциональность при переходе к фоновому исполнению не урезается. Все, как на десктопе, за исключением одной детали: система имеет полное право убить любое фоновое приложение в случае недостатка оперативной памяти или (начиная с KitKat) излишней жадности приложения к ресурсам.

Этот механизм, названный lowmemorykiller, был придуман для того, чтобы, сохраняя черты полноценной многозадачной ОС, Android мог нормально жить в условиях ограниченного объема памяти и отсутствующего swap-раздела. Пользователь может спокойно запускать любые приложения и быстро переключаться между ними, а система сама позаботится о завершении давно не используемых приложений и о том, чтобы в устройстве всегда оставалась свободная память.

В первые годы существования Android назначение данного механизма для многих пользователей было непонятным, поэтому стали популярными так называемые таск-киллеры — приложения, которые время от времени просыпались и завершали все фоновые приложения. Профитом в данном случае считалось большое количество свободной оперативки, что воспринималось как плюс, хотя никаких плюсов в этом, конечно же, не было. Зато было много минусов в виде более долгого переключения между приложениями, повышенного расхода заряда батареи и проблем c пробуждением владельца по утрам (будильник тоже убивался).

Со временем понимание принципов многозадачности пришло, и от таск-киллеров постепенно отказались. Однако их быстро сменил другой тренд — тюнинг самого механизма lowmemorykiller (например, с помощью приложения MinFreeManager). Основная идея метода в том, чтобы приподнять границы заполнения оперативной памяти, при достижении которых система начнет убивать фоновые приложения. Этакий способ «и нам и вам», который позволяет освободить немного памяти штатными средствами, не нарушая идей многозадачности Android.

Но к чему это в итоге приводит? Допустим, стандартные значения границ заполнения памяти — это 4, 8, 12, 24, 32 и 40 Мб, то есть при достижении свободного объема памяти 40 Мб будет убито одно из кешированных приложений (загружено в памяти, но не запущено, это такая оптимизация Android), при 32 — Content Provider, не имеющий клиентов, 24 — одно из редко используемых фоновых приложений, затем в расход идут сервисные процессы приложений (например, сервис музыкального проигрывателя), видимые на экране приложения и текущее запущенное приложение. Разница между последними двумя в том, что «текущее» — это приложение, с которым в данный момент имеет дело юзер, а «видимое» — это то, что, например, имеет уведомление в строке состояния или отображает поверх экрана какую-либо инфу.

В целом все это значит, что в смартфоне всегда будет свободно 40 Мб памяти, которых вполне достаточно для того, чтобы вместить еще одно приложение, после чего проснется поток LKM и начнет очистку памяти. Все ОK, все довольны. Система по максимуму использует память. А теперь представим, что будет, если юзер воспользуется советом доморощенного «эксперта» и поднимет эти значения так, что последнее будет составлять, ну, допустим, 100 Мб (обычно повышаются только три последних значения). В этом случае произойдет одна простая вещь: юзер потеряет 100 – 40 = 60 Мб памяти устройства. Вместо того чтобы использовать это пространство для хранения фоновых приложений, что полезно, так как сокращает время переключения на них и заряд батареи, система будет оставлять его свободным непонятно для чего.

Справедливости ради стоит сказать, что тюнинг LKM может быть полезен для девайсов с совсем уж небольшим объемом памяти (меньше 512) и Android 4.X на борту или для временного увеличения порогов. Некоторые разработчики твиков прямо рекомендуют использовать «агрессивные» настройки только в случае запуска тяжелого софта вроде hi-end игр, а все остальное время оставаться на стандартных. В этом действительно есть смысл.

MinFreeManager — приложения для тюнинга механизма lowmemorykiller

Вердикт: лучше не трогать.

 

Твики I/O

В скриптах, публикуемых на форумах, можно часто встретить твики подсистемы ввода-вывода. Например, в том же скрипте ThunderBolt! есть следующие строки:

echo 0 > $i/queue/rotational; echo 1024 > $i/queue/nr_requests;

Первая дает планировщику ввода-вывода понять, что он имеет дело с твердотельным диском, вторая увеличивает максимальный размер очереди ввода-вывода с 128 до 1024 (переменная $i в командах содержит путь к дереву блочного устройства в /sys, например /sys/block/mmcblk0/, скрипт проходит по ним в цикле). Далее по тексту можно встретить следующие строки, относящиеся к планировщику CFQ:

echo 1 > $i/queue/iosched/back_seek_penalty; echo 1 > $i/queue/iosched/low_latency; echo 1 > $i/queue/iosched/slice_idle;

Далее следует еще несколько строк, относящихся к другим планировщикам (кстати, обрати внимание на совершенно лишние точки с запятой в конце команд). Что во всех этих строках не так? Первые две команды бессмысленны по двум причинам:

  1. Планировщики I/O в современном ядре Linux сами способны понять, с каким типом носителя информации они имеют дело.
  2. Такая длинная очередь ввода-вывода (1024) совершенно бессмысленна на смартфоне. Более того, она бессмысленна даже на десктопе и применяется на высоконагруженных серверах (из рекомендаций по настройке которых она, видимо, и попала в данный скрипт).
Часть скрипта ThunderBolt!

Последние три бессмысленны по той простой причине, что для смартфона, где фактически нет разделения приложений по приоритетам на ввод-вывод и нет механических накопителей, лучший планировщик — это noop, то есть простая FIFO-очередь — кто первый обратился к памяти, тот и получил доступ. И у данного планировщика нет каких-то особенных настроек. Поэтому все эти многоэкранные списки команд лучше заменить на один простой цикл:

for i in /sys/block/mmc*; do echo noop > $i/queue/scheduler echo 0 > $i/queue/iostats done

Кроме включения планировщика noop, для всех накопителей он отключает накопление статистики I/O, что также должно позитивно сказаться на производительности (хотя это всего лишь капля в море, которая будет совершенно незаметна).

Еще один твик, который часто можно найти в скриптах тюнинга производительности, — это увеличение значения readahead для карты памяти до 2 Мб. Механизм readahead предназначен для заблаговременного чтения данных с носителя еще до того, как приложение запросит доступ к этим данным. Если ядро видит, что кто-то достаточно долго читает данные с носителя, оно пытается вычислить, какие данные понадобятся приложению в дальнейшем, и заранее загрузит их в оперативку, позволяя таким образом сократить время их отдачи.

Звучит круто, но, как показывает практика, алгоритм readahead очень часто ошибается, что приводит к лишним операциям ввода-вывода и расходу оперативной памяти. Высокие значения readahead (1–8 Мб) рекомендуются к применению на RAID-массивах, тогда как на десктопе или смартфоне лучше все оставить как есть, то есть 128 Кб.

Изменить планировщик ввода-вывода можно с помощью Trickster Mod

Вердикт: кроме noop, не нужно ничего.

 

Твики системы управления виртуальной памятью

Кроме подсистемы I/O, принято также тюнинговать подсистему управления виртуальной памятью. Зачастую изменению подвергаются только две переменные ядра: vm.dirty_background_ratio и vm.dirty_ratio, которые позволяют регулировать размер буферов для хранения так называемых грязных данных, то есть тех данных, которые были записаны на диск приложением, но еще до сих пор находятся в оперативной памяти и ждут, пока они будут записаны на диск.

Стандартные значения этих переменных в десктопных Linux-дистрибутивах и Android примерно следующие:

* vm.dirty_background_ratio = 10 * vm.dirty_ratio = 20

Это значит, что при достижении размера буфера «грязных» данных в 10% от всего объема оперативки проснется ядерный поток pdflush и начнет записывать данные на диск. Если же операции записи данных на диск будут слишком интенсивными и, даже несмотря на работу pdflush, буфер будет продолжать расти, то при достижении 20% от объема оперативки система переключит все последующие операции записи в синхронный режим (без предварительной буферизации) и работа пишущих на диск приложений будет заблокирована до того момента, пока данные не будут записаны на диск (в терминологии Android это принято называть лагом).

При этом важно понимать, что, даже если размер буфера не достиг 10%, система так или иначе запустит поток pdflush через 30 с. Что нам дают эти знания? Фактически ничего, что мы могли бы использовать в своих целях. Комбинация 10/20% вполне разумна и, например, на смартфоне с 1 Гб памяти составляет примерно 100/200 Мб памяти, чего более чем достаточно в условиях редких всплесков записи, скорость которых зачастую ниже скорости записи в системную NAND-память или SD-карту (при установке софта или копировании файлов с компа). Но создатели скриптов оптимизации с этим, конечно же, не согласны.

Например, в скрипте Xplix можно найти примерно такие строки (в оригинале они намного длиннее из-за проверок на количество оперативной памяти и использования BusyBox):

sysctl -w vm.dirty_background_ratio=50 sysctl -w vm.dirty_ratio=90

Данные команды применяются к устройствам с 1 Гб памяти, то есть устанавливают лимиты «грязного» буфера, равные (примерно) 500/900 Мб. Такие высокие значения абсолютно бессмысленны для смартфона, так как работают только в условиях постоянной интенсивной записи на диск, то есть опять же для высоконагруженного сервера. В ситуации со смартфоном они будут ничем не лучше стандартных. Кстати, в скрипте ThunderBolt! применяются гораздо более разумные (и близкие к стандартным) значения, но я сомневаюсь, что от их применения пользователь заметит хоть какую-то разницу:

if [ "$mem" -lt 524288 ];then sysctl -w vm.dirty_background_ratio=15; sysctl -w vm.dirty_ratio=30; elif [ "$mem" -lt 1049776 ];then sysctl -w vm.dirty_background_ratio=10; sysctl -w vm.dirty_ratio=20; else sysctl -w vm.dirty_background_ratio=5; sysctl -w vm.dirty_ratio=10; fi;

Первые две команды выполняются на смартфонах с 512 Мб оперативки, вторые — с 1 Гб, третьи — с более чем 1 Гб. Но на самом деле есть только одна причина изменять стандартные значения — девайс с очень медленной внутренней памятью и/или картой памяти (привет китайцам). В этом случае разумно разнести значения переменных, то есть сделать примерно так:

sysctl -w vm.dirty_background_ratio=10 sysctl -w vm.dirty_ratio=60

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

Вердикт: лучше не трогать.

 

Выводы

Существует огромное количество и более мелких оптимизаций, включая «тюнинг» сетевого стека, изменение переменных ядра Linux и Android (build.prop), но 90% из них не оказывают никакого влияния на реальную производительность устройства, а остальные 10% либо улучшают одни аспекты поведения устройства в ущерб других, либо настолько незначительно повышают производительность, что ты этого даже не заметишь. Из того, что реально действует, можно отметить следующее:

  • Разгон. Небольшой разгон позволяет повысить производительность, а андервольтинг — сохранить немного батарейки.
  • Оптимизация баз данных. Сильно сомневаюсь, что это даст заметный прирост скорости работы, но теория говорит нам, что работать должно.
  • Zipalign. Забавно, но, несмотря на встроенную в Android SDK функцию выравнивания контента внутри APK-файлов, в маркете можно найти большое количество софта, не прошедшего через zipalign.
  • Отключение ненужных системных сервисов, удаление неиспользуемых системных и редко используемых сторонних приложений (об этом я уже писал в одной из прошлых статей).
  • Кастомное ядро с оптимизациями под конкретный девайс (опять же не все ядра одинаково хороши).
  • Уже описанный планировщик ввода-вывода noop.
  • Алгоритм насыщения TCP westwood+. Есть доказательства, что в беспроводных сетях он намного эффективнее применяемого в Android по умолчанию Cubic. Доступен в кастомных ядрах.
Бесполезные настройки build.prop

LaraCraft304 с форумов XDA Developers провела исследование и выяснила, что внушительное количество настроек /system/build.prop, которые рекомендуют к применению «эксперты», вообще не существуют в исходном тексте AOSP и CyanogenMod. Вот их список:

  • ro.ril.disable.power.collapse
  • ro.mot.eri.losalert.delay
  • ro.config.hw_fast_dormancy
  • ro.config.hw_power_saving
  • windowsmgr.max_events_per_sec
  • persist.cust.tel.eons
  • ro.max.fling_velocity
  • ro.min.fling_velocity
  • ro.kernel.checkjni
  • dalvik.vm.verify-bytecode
  • debug.performance.tuning
  • video.accelerate.hw
  • ro.media.dec.jpeg.memcap
  • ro.config.nocheckin
  • profiler.force_disable_ulog
  • profiler.force_disable_err_rpt
  • ersist.sys.shutdown.mode
  • ro.HOME_APP_ADJ
Оптимизация баз данных

Скрипт для оптимизации баз данных настроек системы и приложений. Для работы, естественно, требуется root и BusyBox.

#!/system/bin/shfor i in \`busybox find /data -iname «*.db»`;do \/system/xbin/sqlite3 $i ‘VACUUM;’;/system/xbin/sqlite3 $i ‘REINDEX;’;done;

xakep.ru


Смотрите также