Mituri despre multitasking și lăcomie android

Această notă este scrisă pe baza podcast-urilor lui Yuri Trukhin și Eldar Murtazin, unde nu au vorbit corect despre modul în care este amenajată multitaskingul în Android și de ce are nevoie de "managerii de sarcini". Multitaskingul în Android este același ca și în actualizarea viitoare a Mango pentru WP7. până la detaliile implementării și ale denumirilor din soluțiile arhitecturale. Eu întâlnesc destul de des înțelegerea incorectă a multitasking-ului în Android și cred că este în mare măsură o vină a Google, nu pot explica în mod obișnuit utilizatorului normal cum este aranjat totul înăuntru și că Task Manager-ul este mai degrabă dăunător decât util.







Mituri despre multitasking și lăcomie android

Mituri despre multitasking și lăcomie android

Parțial, dar există un punct subtil. Faptul este că toate programele Android sunt modulare. Adică programul constă dintr-un set de piese care funcționează independent una de cealaltă (dacă nu numiți în mod explicit un alt modul). Prezența în memoria programului nu înseamnă că este folosită în acest moment. Este posibil ca programul să nu execute deloc un cod, ci pur și simplu să stea în memorie deoarece există memorie și de ce să nu păstrați aplicația în cache, astfel încât activarea ulterioară să aibă loc mai repede. Firește, atunci când memoria este necesară de alte aplicații, cele mai inutile (există un sistem prioritar) vor fi descărcate. Acesta este același lucru cu conceptul de "înmormântare" în WP7. În acest caz, "Managerii de sarcini" sunt pur și simplu dăunători, deoarece descarcă aplicațiile, care apoi vor fi încărcate din nou, pierzând resurse și timp.

Mituri despre multitasking și lăcomie android

Dar totuși, există o anumită cantitate de adevăr acolo, iar acum voi spune de ce.

Această parte a tehnicilor, descriind arhitectura programelor pe Android. Dar vreau să vorbesc despre dispozitivul intern, astfel încât cititorii să aibă o înțelegere a dispozitivului acestui sistem de operare.

În Android, toate modulele din program sunt împărțite în trei tipuri principale:

Le voi discuta mai detaliat despre un exemplu virtual al unui music player.

Aceasta este fereastra aplicației noastre. O fereastră - una activă. În playerul nostru muzical imaginar, o fereastră cu numele piesei, fereastra cu comenzile și imaginea albumului este activată. Durata lor de viata este foarte scurta, atunci cand treceti la o alta fereastra (chiar si in aceeasi aplicatie), atunci totul este intrerupt si dupa un timp toate resursele sunt eliberate, iar activatele sunt ucise. Adică, în fundal, nimic nu este tras și nu poate fi tras. Odată ce ați trecut de la playerul nostru, unde a existat un egalizator frumos, nu trebuie să vă faceți griji că acest egalizator va continua să fie desenat undeva în fundal, nu mai este. Această parte a aplicației nu funcționează deloc.

Mituri despre multitasking și lăcomie android






Mituri despre multitasking și lăcomie android

Dacă aplicația constă doar din activări (de exemplu, un calculator), atunci când trecem de la ea - nu mai consumă resurse. Stai liniștit - în pace în cache, așteptând să te întorci.

Mituri despre multitasking și lăcomie android

Receptoare difuzate

Aici am o dificultate în traducerea normală a acestei fraze în limba rusă, din moment ce cuvântul "receptoare de mesaje difuzate" pare mai degrabă stîngace, voi ieși din situație.

Acest modul trăiește exact cât timp este nevoie pentru a procesa un mesaj din sistem. Aplicația rămâne suspendată în memorie în cazul în care sistemul trimite încă un astfel de mesaj și în loc să pornească din nou aplicația va fi deja în memorie, gata pentru procesare.

Mituri despre multitasking și lăcomie android

Mituri despre multitasking și lăcomie android

Dar aici, trucurile încep cu consumul de resurse. Dacă aplicația sa înscris pentru a primi mesaje la nivel global (în manifest), atunci sistemul va rula întotdeauna și o va ucide cu un "taskmender" - dăunător și inutil. Dar aplicația se poate înregistra pentru a primi evenimente în mod programatic, după care le va primi în timp ce rulează. De exemplu, un player muzical ar trebui să primească evenimente din setul cu cască pentru a controla redarea și a întrerupe în cazul unui apel. Dacă nu se execută - pentru el aceste evenimente nu sunt importante, el nu reacționează la ele.

Așa că am ajuns la cel mai important consumator de resurse. Servicii, această parte a programului care ar trebui să funcționeze în fundal, și este proiectat exact pentru acest lucru și pentru nimic mai mult. Acestea sunt cele mai mici blocuri care funcționează cu multitasking în Android, iOS și WP7 Mango.

Mituri despre multitasking și lăcomie android

Mituri despre multitasking și lăcomie android

Aceste servicii sunt sincronizare, actualizări, descărcări. Pentru ca un music player să cânte muzică, trebuie să fie serviciul! Chiar și în timpul unei convorbiri, partea din programul responsabil pentru conversație este un serviciu necesar conversației, iar utilizatorul poate juca Angry Birds în acest moment.

Mituri despre multitasking și lăcomie android

De fapt, aceștia sunt principalii utilizatori ai resurselor, dar sunt foarte greu de definit, este mai bine să le analizăm în setările standard ale aplicațiilor (Running Services).

Dar Android poate ucide și serviciile cu o lipsă de memorie, deși are prioritate pe durata vieții, ceea ce este surprinzător, atunci el va încerca să-i pornească din nou pentru a returna totul așa cum a fost. Cea mai mare prioritate pentru serviciile cu o pictogramă în bara de stare este cât de prostește sună. Pur și simplu, aceste servicii le arată utilizatorilor că există și funcționează, iar Android le ține ultima. De aceea, majoritatea muzicienilor desenează o pictogramă în bara de stare, cum ar fi pictograma arhitecturală cu urechi.

În general, dacă intri în detalii cu WP7, atunci implementarea pare diferită, dar dacă te uiți la ochii utilizatorului, sarcina va fi rezolvată la fel: o mică parte a aplicației care face partea specifică a lucrării.

concluzie

Este important să înțelegeți că aplicațiile pot avea părți diferite, cu proprietăți diferite și prin uciderea unei aplicații, puteți forța sistemul să-l reîncărcați. Kill este în valoare numai de aplicații scumpe scrise (da, într-o piață fără moderare, sunt suficiente). În același timp, funcționează doar mici bucăți de programe, toate celelalte părți dorm bine și nu afectează în nici un fel funcționarea sistemului.







Articole similare

Trimiteți-le prietenilor: