4 August 2011

Второе дыхание бюджетного Android-смартфона

Development for Android
Android smartphoneОбладатели неновых смартфонов со скромным объемом оперативной памяти (160 в моем случае) очень скоро начинают ощущать тормоза при работе. Поставил буквально несколько программ, а переключение между ними уже сопровождается ощутимыми задержками, и вызов Quick Settings становится уже совсем не «quick».

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

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


Моя цель:

— чтобы 3-4 небольшие программы (категории: contacts, notes, to-do, settings, calendar), которыми я пользуюсь очень часто, всегда находились в оперативной памяти. Чтобы их вызов и переключение между ними делалось моментально;
— чтобы смена состояния телефона не сопровождалась странными тормозами и подвисаниями (вкл/выкл мобильного инета, разлочка, момент звонка, приход SMS);
— чтобы было запущено минимальное количество только нужных мне процессов (для сохранения ресурса аккумулятора);
— чтобы переход между рабочими столами и скроллинг списков всегда был плавным, даже после длительной работы системы;
— чтобы всегда было достаточно оперативки (или была возможность быстро освободить её) для запуска одного-двух больших приложений.


Вот что именно мне помогло

(для Samsung GT-i5700 Galaxy Spica, 160MB RAM, Android 2.1):

1) Права root. Я так понял, что с этим у каждого девайса своя история. Ищите свой случай (модель + os).

2) Auto Memory Manager (root, free, 1.1M) / обзор на русском — выставил все пороги на минимум (что-то вроде 2, 3, 4, 5, 3, 12).
Это позволяет:
— избежать выгружания нужного мне софта, если свободной оперативки ещё вполне достаточно;
— более полно задействовать для работы доступную оперативную память;
— добиться более быстрого запуска новых приложений, так как система теперь не тратит время и ресурсы на предварительную выгрузку других приложений.

3) Autostarts (root, $0.99, 190k) / обзор на русском — самый важный инструмент. Именно благодаря этой маленькой программе удалось отучить разные приложения запускатся при возникновении разных событий в системе. Именно она смогла на 100% дать контроль над тем, какой набор программ будет запущен при старте системы (перепробовал много Autorun-менеджеров).
Я отвязал практически все реакции всех программ на разные события, оставив только то, что явно счел полезным, или же в чем не увидел вреда. Вроде потребовался ребут, чтобы настройки вступили в силу, но я не уверен.
Именно после этого хака запуск системы стал быстрее, инет после подключения появляется без задержки, и перестали в фоне произвольно запускаться самые неожиданные жирные приложения (типа Evernote, Android Market), выгружая по ходу всё полезное запущенное.
При большом объеме оперативки дефолтное поведение системы скорее всего вполне оправданно и полезно (запускать в фоне то, что пользователю скорее всего как раз понадобится), но в нашем бюджетном случае такое поведение просто убивает производительность системы. Вот это мы как раз исправили.

Важно

Одна особенность кнопки Back: если при работе с приложением в цепочке навигации по нему не осталось предыдущих экранов, либо же это первый экран — при нажатии Back приложение закрывается (на самом деле оно получает статус Empty и становится первым кандидатом на удаление из памяти, а благодаря установленным в системе порогам, о которых упоминалось выше, очень часто приложение сразу выгружается).
Если хотите, чтобы нужные Вам программы всегда оставались в памяти и переключение на них всегда было максимально быстрым — всегда возвращайтесь к рабочему столу только нажатием кнопки Home, а между запущенными приложениями всегда переключайтесь таск-свитчером (долгое нажатие Home), или специальными лаунчерами/свитчерами, например SwipePad.

Дополнительно

Для контроля полета пригодится хороший таск-менеджер, который умеет показывать объем free memory, запущенные процессы, и дает возможность завершить ненужный процесс для освобождения памяти.
Мне подошел ES Task Manager который дополнительно имеет возможность сформировать white list и потом тапом по виджету убивать всё, что в этот список не входит. А еще можно поставить флажок в настройках, чтобы такая чистка делалась автоматически, когда Вы лочите смартфон (when screen is off).

UPD 21.08.11
Еще нашел полезную утилиту FMR Memory Cleaner (free, 223k) — она помогает при длительной работе девайса избавиться от накопившегося в памяти мусора и соответствующих тормозов. Она делает что-то похожее на ребут, но программный: все приложения перегружаются, некоторые иногда приходится запускать вручную после этого, но всё начинает работать значительно шустрее.
Раньше мне так помогало только выключение/включение смартфона.

Бонус

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

У меня всё. Буду рад замечаниями и дополнениям. Спасибо за внимание.

Tags:Androidтормозапамятьramподвисанияпроцессыбатареяаккумуляторпроблемарешение
Hubs: Development for Android
+84
40.9k 145
Comments 89
Popular right now
Top of the last 24 hours