Öreg Android gyorsítása (Xperia X10i Android 2.3.3-on tesztelt – ROOT és xrecovery kell hozzá!)

A mai napon olyan felfedezést tettem, amiről nem is értem miért, de sehol nem írnak. Ez pedig az, hogy a Windows rendszerekhez hasonlóan, az Android is egy idő után (telepített, leszedett programok miatt) elkezd lassulni. Aztán az ember el is felejti, hogy milyen gyors is volt a készülék újkorában még az első indításkor, csak azt veszi észre, hogy egyre lassabb lesz, akadozik, nem az igazi a telefon. De nem kell új készüléket venni, nem kell újra telepíteni az operációs rendszert. A megoldást véletlen találtam meg, egy módosított szoftver telepítése kapcsán.

Lássuk csak miről is van szó. Fel akartam tenni egy módosított fényképező progit, ami már tudja a Bravia Engine-t, amit az X10 alapból nem tud. Ennek a telepítéséhez pedig ROOT jogosultság kell (itt írtam már X10-nél hogyan is kell csinálni ezt), kell a BusyBox nemű program (Play-ről ingyenesen) és egy XRECOVERY-nek nevezett program. Az xrecovery telepítése nagyon részletesen le van írva az XDA oldalán, úgyhogy erről most nem írnék (ha merül fel rá igény, szívesen írok majd róla később magyarul).
Link: http://forum.xda-developers.com/showpost.php?p=16206451&postcount=15

Ugorjuk is egy nagyot, már fent van az xrecovery. Elindítjuk a telefont úgy, hogy bekapcsolás után amikor a SonyEricsson logo megjelenik meg kell nyomni többször (vagy hosszan) a BACK gombot (<=). Ekkor belép a telefon az xrecovery felületre. (a kép 0.1-es, nem tévesszen meg senkit, a 0.3 is így néz ki 🙂 )
xrecovery-0.3-menu
A menüben a hangeről fel és le gombokkal navigálhatunk (fel és le 🙂 ), a középső gombbal nyomhatunk “entert” és a visszával léphetünk vissza.

A program elengedhetetlen, mert sok fontos dolgot tud:
– mentést / visszaállítást készíthetünk vele a rendszerről SD kártyára
– telepíthetünk az XDA oldalról letöltött ZIP fájlokat (program mentéseket)
– TÖRÖLHETJÜK A CACHE tartalmát (nekünk most ez kell)

Mielőtt bármit is tennénk, csináljunk egy mentést! Ezt a “Backup and restore” pont alatt tehetjük meg. Jobb félni mint megijedni 🙂

Két helyen kell törölni a CACHE tartalmát:
– a főmenüben a “Wipe cache partition” menüponttal
– és az “Advanced options” alatt a “Wipe Dalvik cache”

Ha ezzel megvagyunk, válasszuk a “Reboot phone”-t, a telefon újraindul. Ebben az eseteben az első indulás sokáig fog tartani, mert a rendszer a törölt dalvik fájlokat újra kell, hogy generálja (ilyenkor fordítja le a telepített progikat a rendszer). Persze felmerülhet a kérdés, hogy akkor miért töröltük le a dalvik cache-t, ha ismét létrehozzuk ezzel? A válasz az, hogy mert tele volt szeméttel az uninatallált programok után. Persze a Titanium Backup tudja tisztítani a dalvik cache-t (csak a fizetős verzió), de nem ilyen hatékonyan, a cache partíciót pedig egyáltalán nem tudja takarítani, szóval ezért 🙂

Ha elindult a telefon, olyan gyors lesz mint újkorában, de minden programunk és beállításunk megmarad 🙂 Ez a cache tisztítást érdemes elvégezni ismét, ha úgy érezzük kezd nagyon akadozni, lelassulni a telefonunk.

Android szabad RAM – mennyi az annyi?

Android servicesAz Android rendszerek memóriakezeléséről már írtam egy korábbi cikkemben, most a rendszer által mutatott (vagy talán látható?) memóriával (RAM) foglalkoznék. Ha bemegyünk a futó programokhoz akkor a RAM indikátor két részből tevődik össze, egy “használt” és egy “szabad” RAM látszik. Nekem X10i-m van, barátnőmnek pedig Ray, az X10i 384Mb RAM-ot a Ray 512Mb RAM-ot tartalmaz, elvileg (vagy talán gyakorlatilag is). Csakhogy amikor összeadom a használt és a szabad RAM mennyiségét soha nem jön ki ez a szám, mindig kisebb lett.

Nagyon sok magyar és külföldi oldalon kutattam után, hogy mi lehet ennek az oka de kielégítő választ nem találtam sehol. Volt ahol a videó-memóriára, volt ahol a rendszerre kenték a dolgot, hogy azok használták fel a hiányzó RAM-ot. Egy azonban biztos, hogy nem látszik annyi RAM, amennyi fizikailag benne van a telefonban.

Sony Ericsson X10i adatok, számítások:
– gyári memória mérete: 384Mb
– általam összeszámolt: 250Mb (szabad + használt)
– hiányzik: 134MBb (gyári – általam számolt) -> 35% hiányzik
– feltételezésem szerint ezt a 35%-ot a rendszer magja a kernel és a főbb rendszerfolyamatok foglalják le maguknak.

Sony Ericsson Ray adatok, számítások:
– gyári memória mérete: 512Mb
– általam összeszámolt: 300Mb (szabad + használt)
– hiányzik: 212MBb (gyári – általam számolt) -> 41% hiányzik
– feltételezésem szerint ezt a 41%-ot a rendszer magja a kernel és a főbb rendszerfolyamatok foglalják le maguknak.

Ha valaki esetleg tudja, hogy pontosan mi is használja fel az eltűnt memóriát, az legyen kedves kommentben írja meg. Köszönöm! 🙂

UPDATE 2012.05.21.
Sikerült a nyomára akadnom a hiányzó ramnak, tényleg a rendszerfolyamatok foglalják le maguknak és a hardvereknek. Ezen az oldalon bővebben olvashattok róla. A lényeg annyi, hogy a rendszer működéséhez nagyjából 91 Mb ram szükséges Gingerbread esetén valamint még az Elixir2 rendszer-információival megnézetem, nagyjából 35 Mb ram-cache van használatban átlagosan. Ez azt jelenti, hogy körülbelül 126 Mb ram a rendszernek van a birtokában és ezt nem mutatja a memóriakezelő sem. De ez az érték mindig változik, ezért van az, hogy a memóriakezelőben ha összeadjuk a használt és szabad ram-ot, akkor mindig más végösszeget kapunk. Szóval Sony Ericsson X10i esetében a RAM áll egy induláskori durván 250Mb (használt és szabad RAM összesen) + durván 91 Mb rendszer által lefoglalt RAM + durván 35 Mb RAM-CACHE összességéből. Ez mindösszesen nagyjából 376 Mb ram ami már majdnem 384 Mb, ezt a tévedést tudjuk be annak, hogy több programmal mértem és volt pár másodperc időeltérés is, ez idő alatt változhatott az aktuálisan használat ram megoszlása.

Android vs. iOS (iPhone) és WP7 – UI tények

Android vs iOSAmióta Androidos Xperia X10i-m van egyre jobban megbarátkoztam ezzel az oprendszerrel, bár a Symbian után elsőre furcsa volt. Amikor megvettem még 2.1-es droid volt rajta, majd kijött a 2.3.3-as frissítés. Ahogy egyre jobban kiismertem a rendszert észrevettem, hogy több esetben akadozni látszott a készülék. Sok helyen azt olvastam, hogy ez a 2.3.3-as rendszer miatt van, hogy nagyobb a “gépigénye”, de szerintem nem így van. Ezt az alább leírtakra alapozom.

Az Android és az iOS között alapvető különbségek vannak, az Android bytecode-ot (ez egy köztes kód a natív kód és a JVM között) alkalmaz a programok futtatásakor míg az iOS natív kóddal dolgozik. Ezen kívül a prioritások között is különbségek vannak, az Android normál prioritáson “rajzolja” a grafikus felületet ellenben az iOS (és WP7 is) real-time Android vs iOS 2prioritáson van. Ez azt jelenti, hogy a droidos telefonok grafikus felülete a többi futó programmal osztozni kénytelen, ameddig az almás eszközök mindent alárendelnek a grafikus felületnek. Ez azt eredményezi, hogy az Apple termékei gyorsabbnak tűnnek, holott több esetben nem is azok, ez csak a látszat.

Egy teszt amit bárki elvégezhet akinek mindkét gyártó készüléke megvan:
Töltsünk le egy normál weblapot iOS alatt és Android alatt is. Miközben az oldal töltődik érintsük meg a képernyőt és mozgassuk a tartalmát (mondjuk amikor már a fele oldal megvan, de még hiányos), azt fogjuk látni, hogy az iOS megállít minden letöltést és egyéb folyamatot és minden erejét a grafika kirajzolására szenteli míg az Android folytatja az oldal betöltését és eközben kissé zötyögve de reagál a tartalom mozgatására is. Ebből az szűrhető le, hogy a ténylegesen gyorsabb rendszer tűnik ez esetben lassabbnak mert a felhasználó szubjektív benyomása a döntő ilyenkor nem pedig a tények.

Ez a dolog egyébként minden eddig Android OS-t érint, megoldás elvileg a ICS 4.0-ás rendszerben lesz rá.

Röviden ennyi a lényeg, de akit mélyebben érdekel ez a téma az alábbi linkeken olvashat róla bővebben:
https://plus.google.com/100838276097451809262/posts/VDkV9XaJRGS

Android memóriakezelés

A kezdet

Pár hónapja vettem egy Sony Ericsson Xperia X10-es telefont. Eddig szinte csak Symbian-os vagy S40-es Nokiáim voltak, de a technológiai fejlődés megállíthatatlanul utat tört magának és nekem is lépést kellett tartanom a korra. Hosszas mérlegelés után döntöttem ennél a készüléknél és operációs rendszernél.

Idő szülte érdeklődés

Akinek hozzám hasonlóan ez egy ismeretlen terep, az gyorsan belefuthat a sokak által használt “Task killer” programokba. Én is így voltam ezzel, mindenki javasolta, hogy szükséges és kell. De ahogy egyre jobban elmélyedtem ebben a témában kiderült, hogy nem csak szükségtelen de még kis mértékben káros is. Káros a telefon készenléti idejére, ugyanis az alkalmazások újraindítása megterheli a telefont (processzor, akkumulátor használat növekedés az alkalmazások újraindításakor). Miután kilőttem egy csomó task-ot kisvártatva ismét elindult majdnem mind újra. Sajnos erre a problémára nem igazán találtam választ (magyar oldalakon) sehol. Ezért úgy döntöttem megosztom ezt az infromáció kissé konyhanyelven, hogy más ne szívjon annyit mint én.

Megoldás

A kérdésemre a választ itt találtam meg. Mivel ezen az oldalon minden le van írva ezért én itt csak kivonatolom az olvasottakat. A régebbi (1.5 és 1.6) Android rendszerek esetében még nem volt teljesen tökéletes a memória kezelése, ott még volt értelme task killert használni. Viszont a 2.1 és 2.2 (és fölött) már szinte semmi haszna nincs. Egyszerűen fogalmazva a rendszer mindig annyi memóriát szabadít fel magának amennyire szüksége van, intelligensen a következő módon. A memóriában tárolt programok 5 csoportra vannak bontva melyek a következők:

Android memóriakezelés

  1. Active processes (Aktív folyamatok) – Ez a éppen használat, látható folyamatok, mondjuk egy e-mail írása.
  2. Visible processes (“Látható” folyamatok) – Ezek is szem előtt vannak még (widget mondjuk), de itt nincs interakció a felhasználó és a program között.
  3. Started Service Processes (Szervizek) – Ezek már olyan folyamatok melyek a háttérben futnak, nincs interakció a felhasználóval és nem is láthatóak. Kisebb az erőforrás igényük is ezáltal.
  4. Background processes (Háttér folyamatok) – Ezek a szerviz nélküli, háttérbe tett folyamatok. Ezek olyan folyatok amelyekből már “gyomlálhat” a rendszer. A legrégebben “látott” folyamatot törli először ha szükség van erőforrásra.
  5. Empty processes (“Üres” folyamatok) – Ez az egyszer már elindított, de azóta bezárt folyamatok. Azért vannak a memóriában, hogy ha legközelebb szükség lenne rájuk, akkor sokkal gyorsabban be tudnak töltődni (el tudnak indulni), mintha ezt a memória kártyáról tennék. Itt is igaz a legrégebben “látott” (leállított) folyamatot veszi ki először a memóriából a rendszer ha erőforrást kell felszabadítania.

Bővebb, angol nyelvű leírás itt olvashatjátok (fentebb is linkelt): http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/

Remélem tudtam segíteni egy kicsit az Android memóriakezelés megértésében.