Jelly Bean - újdonságok és saját tapasztalatok (1. rész)

A Google közzétette a Jelly Bean újdonságairól szóló listát, gondoltam ezt érdemes megosztani magyar nyelven is illetve a saját tapasztalataimat is beleszőni, hiszen napok óta Jelly Bean-t használok. Illetve megjelent egy remek írás a Project butterről (vaj projekt), ami elmagyarázza, hogy mitől is olyan remek a Jelly Bean és az új funkciók mellett milyen hatalmas változást kapunk a motorháztető alatt.
Sok kritika érte az Androidot korábban a lag miatt. Gyengébb telefonokon jobban, erősebb telefonokon kevésbé érződött, de tagadhatatlan tény, hogy bár az Ice Cream Sandwich óriási fejlődést hozott, azért a rendszer még nem volt tökéletes. Mostanáig. Bár a volt Google alkalmazott megmondta anno (aztán rendesen kapott cáfolatokat, hiszen sok marhaságot írt össze), hogy az Android sosem lehet olyan gördülékeny, mint az iOS, de azt hiszem a Jelly Bean a konkrét válasz arra, hogy de. Most már nem kell programozónak lenni ahhoz, hogy valaki ezt cáfolni tudja, elég kézbe venni egy Jelly Bean-el hajtott készüléket és a vita le is van zárva.

Android 4.1, Jelly Bean, is the fastest and smoothest version of Android yet.

Project Butter
Miért jó ez nekem, mi is ez tulajdonképpen? Az Android Police-on megjelent egy remek írás (köszönet nekik a képekért), de egyrészt elég hosszúra sikeredett, másrészt ugye angol nyelven van. Röviden összefoglalva:

Puffer: az elkészült képkockákat a rendszer pufferekben tárolja és ott várakoznak a megjelenítésre
Vsync: A vsync a vertical syncron sign rövidítése, vagyis függõleges szinkron jel. A grafikus mag akkor adja ezt a jelet, amikor kirajzolt egy teljes képet, és új képet kell kirajzolnia
Sárga sáv: vsync ütemek idővonala
Zöld téglalap: GPU azaz grafikus mag által készített puffer
Kék téglalap: CPU azaz processzor által készített puffer

A legtöbb Androidos készülék néven 60Hz-en fut (de mondhatjuk azt is, hogy 60 FPS-el azaz frame per secundum). Így 16 ezredmásodperc ideje van a programnak kirajzolni a következő képkockát. Ha ez nem sikerül, el is olvad a vaj sima érzés (tetszett ez a megfogalmazás, ezért át is vettem). Ice Cream Sandwich alatt a következő képkocka kirajzolása akkor indul, amikor a rendszer ráér, vagy időben vagy nem. Ahogy esik, úgy puffan. S bár sokkal gördülékenyebb a korábbiakhoz képest, mégsem tökéletes. Vessetek egy pillantást a képre (a sárga sáv a vsync ütemeket mutatja, a kék illetve zöld téglalap pedig a puffert):

vsync_old.png

Jelly Bean alatt a Vsync impulzusok vezérlik a képkockák rajzolását, tehát mialatt mondjuk a 0. képkockát kirajzolja a rendszer, már ki is számolja is az elsőt, így amint letelik a 16ms, készen áll a megjelenítendő következő képkocka és időben meg is tud jelenni. Ezt láthatjuk a képen (mindig a következő ütem - sárga sáv - előtt elkészül a puffer):

vsync_new.png

Ezzel el is értük a vaj sima érzést. Vagy mégsem? Jelly Bean alatt az ütemezési szabályok bevezetése mellett megjelent a tripla pufferelés is. Korábban a szokásos dupla pufferelés volt használatban Androidon. Azaz egy képkockát megjelenített a rendszer és a következőt pufferelte, hogy meg tudja jeleníteni, amikor szükséges. Így néz ki egy tipikus dupla pufferelés, ha a rendszer elfoglalt. Elkezd hibázni, majd folytatja a folyamat végéig, hiszen az egyik puffer meg van jelenítve, a másik pedig várakozik arra, hogy megjelenjen, nincs üres puffer helyrehozni a problémát.

double_buffer.png

Minden mágia ellenére Jelly Bean alatt is előfordulhat (ahogy iOS és a többi operációs rendszer alatt is), hogy a rendszer annyira le van terhelve, hogy nem tudja időben kirajzolni a következő képkockát és így bizony lesz egy kis röcögés. Ez nem probléma, volt már ilyen a történelemben. De a Jelly Bean képes ebből a gödörből is a lehető leghamarabb kikecmeregni, hiszen itt van nekünk a tripla pufferelés. Tegyük fel, hogy kicsit elfoglaltabb a rendszer, mint szeretnénk. Kirajzolja az aktuális képkockát, de sajnos lassan és várakozik a következő. Semmi probléma, a rendszer már nem elfoglalt, így a harmadik pufferben előre gondolkodik és adott vsync impulzuson belül elkezdi pufferelni, így meg tudja jeleníteni amikor eljön az ideje. Képen talán egyszerűbb értelmezni:

triple_buffer.png

De ha ez ekkora királyság, miért nem használ az Android folyamatosan tripla pufferelést? Nos, a tripla pufferelés beviteli laghoz vezet. Nézzétek meg a képen a C puffert (kék és zöld téglalap), ami ugye a harmadik és nézzétek meg felül, a sárga vonalon, hogy milyen későn fogja kirajzolni a rendszer. A kettő között pedig hiába adunk utasítást, még korábbi képkockát fog kirajzolni. Tehát ha a rendszer elfoglalt választhatunk, hogy az animáció lagoljon vagy a bevitel. A Google úgy döntött, hogy a bevitel várhat. S mivel az input lagot sem szeretjük, amint utolérte magát a rendszer, azonnal meg is szűnik a tripla pufferelés és visszatér a megszokott dupla.

Most, hogy már tudjuk miről van szó, nézzük meg, hogy az Ice Cream Sandwich hogy viszonyul a Jelly Beanhez nagy sebességű kamerafelvételen:

Illetve vessünk egy pillantást arra, hogy mennyire sima a felület használat közben (én néha csak azért váltogatok az alkalmazások között, hogy láthassam a rendszer simaságát. Elképesztő):

Mostanra biztosan elfáradtatok kicsit, én is. :) A cikk folytatása következik hamarosan, ahol a Jelly Bean újdonságait mutatjuk be.

Tagek: 

ripthestage képe

Kifejezetten allergiás vagyok az emberi hülyeségre.

Rip the stage, rip the system I was born to rage against 'em
/Rage Against The Machine/
http://www.youtube.com/watch?v=guF4Av4sIgg

ripthestage írásai Iratkozz fel ripthestage írásaira!

Hozzászólások

Nekem az tetszett, ahogy

Nekem az tetszett, ahogy megoldották az app indítási animációkat. Belegondoltam, hogy mennyire aprónak tűnő dologról van szó és mégis milyen sokat számít.
Remélem a CM10-es fejlesztésben én is megkapom az SGS-re ezeket a finomságokat.

readya,

readya,
Egy kis segtséget kérnék, ugyanis nemrég vettem Galaxy Nexus-t és nem tudom eldönteni, hogy van-e vele valami HW probléma, vagy nincs. Az egyik problémám, hogy a Quadrant mérés szerint az I/O sebessége messze lemarad a referencia Galaxy Nexus értéktől (1206-pontot kap az én példányom 4.1.1-es JB-vel, de előtte ICS-sel is ugyanez volt a gond) talán a database write tolja meg az időt. A másik gondom a kijelző, ugyanis itt feltűnt nekem egy nagyon halvány függőleges csíkozódás világos háttérnél (pl naptár) Betudnám a pentile hibájának, de előtte Galaxy S-em volt és ott nem láttam ilyet.
Van még két kicsit bosszantó talán SW problémám, az egyik, hogy nem működik együtt az autó Bluetooth kihangosítójával, bár a kihangosító szerint "pairing successful", a másik, pedig, hogy a mastercard mobile programban nem tudom az alkalmazást regisztrálni, még addig sem jut el, hogy elküldje az SMS-t a központba. Neked vannak-e ilyen gondjaid, vagy ez egyedi probléma?

Szia! Kollégámnak ugyanilyen

Szia! Kollégámnak ugyanilyen kijelző hibája volt. Ne törődj bele, ez nem normális. Ha Samsung garid van, már hívd is a zöld számot és kérd, hogy jöjjön házhoz a szerelő egy kijelző cserére.

A Quadrantal ne foglalkozz. Full wipe után elérné azt az I/O-t, de egy már használt rendszer sosem lesz ott. Ha igazi mérést szeretnél, Play-ről töltsd le a CF Bench-et, az a valóságot mutatja, ellentétben a Quadrantal.

lehet nagyon hülye kérdés, de

lehet nagyon hülye kérdés, de a wallet nálunk müködik?
Vagyis, ha regisztrálok megfelelő kártyát használhatom paypassos terminálokon?
Ez egy indok lenne, hogy feladjam a lustaságom és a gyári tartalmakat :) bár elég nagy a nyomás nélküle is.

Sziasztok!

Sziasztok!

Remélem majd meg tudják oldani azt, hogy úgy portolják rá az SGS1-re, hogy rajta vannak a Samsungos alkalmazások is, mert jelenleg egyik romos csapat sem csinált olyat + működjön a kamera, mert tudtommal az sem működik.

SGS1-re egy tökéletesen

SGS1-re egy tökéletesen* működő Jelly Bean jött ma reggel ki, innen tudod letölteni: http://forum.xda-developers.com/showthread.php?t=1775169

Iszonyat jó, teljesen vajprojekt... :D

*nem teljesen igaz, nagyjából a következő hibákkal lehet találkozni:
- a szokásosnál gyengébb WIFI-jel
- külső memóriakártyát nem tudod gépen keresztül megnézni
- YouTube appot nem lehet marketből telepíteni, xda-forumról kell JB-s verziót letölteni.

Minden másban úgy viselkedik, ahogyan a bemutatón látni lehetett :)