Închide anunțul

Există încă o mulțime de oameni care nu știu cum funcționează multitasking-ul în iOS. Pentru început, totuși, este necesar să subliniem că acesta nu este un adevărat multitasking, ci o soluție foarte inteligentă care nu îngreunează sistemul sau utilizatorul.

Se pot auzi adesea superstiții conform cărora aplicațiile care rulează în fundal în iOS umplu memoria de operare, ceea ce duce la încetinirea sistemului și la durata de viață a bateriei, așa că utilizatorul ar trebui să le dezactiveze manual. Bara multitasking nu conține de fapt o listă cu toate procesele în fundal care rulează, ci doar cele mai recente aplicații lansate. Deci, utilizatorul nu trebuie să-și facă griji cu privire la procesele care rulează în fundal, cu excepția câtorva cazuri. Când apăsați butonul Home, aplicația intră de obicei în stare de repaus sau se închide, astfel încât să nu mai încarce procesorul sau bateria și să elibereze memoria necesară dacă este necesar.

Acest lucru nu este multitasking cu drepturi depline atunci când aveți zeci de procese care rulează în prim-plan, care este întreruptă sau complet oprită dacă este necesar. Doar câteva procese secundare rulează în fundal. De aceea, rar vei întâlni o blocare a aplicației pe iOS, de exemplu Android este copleșit de aplicații care rulează de care trebuie să aibă grijă utilizatorul. Pe de o parte, acest lucru face ca lucrul cu dispozitivul să fie neplăcut și, pe de altă parte, provoacă, de exemplu, pornire lentă și tranziții între aplicații.

Tipul de rulare al aplicației

Aplicația de pe dispozitivul tău iOS se află într-una dintre aceste 5 stări:

  • Alergare: aplicația este pornită și rulează în prim-plan
  • Fundal: încă rulează, dar rulează în fundal (putem folosi alte aplicații)
  • Suspendat: Folosește în continuare RAM, dar nu rulează
  • Inactiv: aplicația rulează, dar comenzi indirecte (de exemplu, când blocați dispozitivul cu aplicația care rulează)
  • Nu alearga: Aplicația s-a încheiat sau nu a început

Confuzia vine atunci când aplicația trece în fundal pentru a nu deranja. Când apăsați butonul Acasă sau utilizați gestul pentru a închide aplicația (iPad), aplicația trece în fundal. Majoritatea aplicațiilor sunt suspendate în câteva secunde (sunt stocate în memoria RAM a iDevice-ului astfel încât să poată fi lansate rapid, nu încarcă atât de mult procesorul și astfel economisesc durata de viață a bateriei) S-ar putea să credeți că dacă o aplicație continuă să folosească memoria, aveți pentru a o șterge manual pentru a o elibera. Dar nu trebuie să faci asta, pentru că iOS o va face pentru tine. Dacă aveți o aplicație solicitantă suspendată în fundal, cum ar fi un joc care utilizează o cantitate mare de RAM, iOS o va șterge automat din memorie atunci când este necesar și o puteți reporni atingând pictograma aplicației.

Niciuna dintre aceste stări nu se reflectă în bara multitasking, bara arată doar o listă de aplicații lansate recent, indiferent dacă aplicația este oprită, întreruptă sau rulează în fundal. De asemenea, puteți observa că aplicația care rulează în prezent nu apare în panoul Multitasking

Sarcini de fundal

În mod normal, când apăsați butonul Acasă, aplicația va rula în fundal, iar dacă nu o utilizați, se va întrerupe automat în cinci secunde. Deci, dacă descărcați un podcast, de exemplu, sistemul îl evaluează ca pe o aplicație care rulează și întârzie terminarea cu zece minute. După zece minute cel târziu, procesul este eliberat din memorie. Pe scurt, nu trebuie să vă faceți griji că vă întrerupeți descărcarea prin apăsarea butonului Acasă, dacă nu durează mai mult de 10 minute pentru ao finaliza.

Alergare nedefinită în fundal

În caz de inactivitate, sistemul închide aplicația în cinci secunde, iar în cazul descărcărilor, terminarea este amânată cu zece minute. Cu toate acestea, există un număr mic de aplicații care necesită rularea în fundal. Iată câteva exemple de aplicații care pot rula în fundal pe termen nelimitat în iOS 5:

  • Aplicații care redă sunet și trebuie întrerupte pentru un timp (întreruperea muzicii în timpul unui apel telefonic etc.),
  • Aplicații care vă urmăresc locația (software de navigare),
  • Aplicațiile care primesc apeluri VoIP, de exemplu dacă utilizați Skype, puteți primi un apel chiar și atunci când aplicația este în fundal,
  • Descărcări automate (de ex. Chioșc de ziare).

Toate aplicațiile ar trebui să fie închise dacă nu mai efectuează o sarcină (cum ar fi descărcări în fundal). Cu toate acestea, există excepții care rulează în fundal continuu, cum ar fi aplicația nativă Mail. Dacă rulează în fundal, ocupă memorie, consumă CPU sau reduc durata de viață a bateriei

Aplicațiile cărora li se permite să ruleze în fundal pe termen nelimitat pot face orice fac în timp ce rulează, de la redarea muzicii până la descărcarea de noi episoade Podcast.

După cum am menționat anterior, utilizatorul nu trebuie să închidă niciodată aplicațiile care rulează în fundal. Singura excepție de la aceasta este atunci când o aplicație care rulează în fundal se blochează sau nu se trezește corect din somn. Utilizatorul poate apoi închide manual aplicațiile în bara multitasking, dar acest lucru se întâmplă rar.

Deci, în general, nu trebuie să gestionați procesele de fundal, deoarece sistemul se va ocupa singur de ele. De aceea iOS este un sistem atât de proaspăt și rapid.

Din perspectiva dezvoltatorului

Aplicația poate reacționa cu un total de șase stări diferite ca parte a multitasking:

1. applicationWillResignActive

În traducere, această stare înseamnă că aplicația va renunța în viitor (căteva milisecunde) de la a fi aplicația activă (adică aplicația din prim-plan). Acest lucru se întâmplă, de exemplu, atunci când primiți un apel în timp ce utilizați aplicația, dar, în același timp, această metodă provoacă și această stare înainte ca aplicația să treacă în fundal, așa că trebuie să țineți cont de aceste modificări. Această metodă este potrivită și pentru ca, de exemplu, să suspende toate activitățile pe care le desfășoară atunci când există un apel de intrare și să aștepte până la sfârșitul apelului.

2. applicationDidEnterBackground

Starea indică faptul că aplicația a trecut în fundal. Dezvoltatorii ar trebui să folosească această metodă pentru a suspenda toate procesele care nu trebuie neapărat să ruleze în fundal și pentru a șterge memoria datelor neutilizate și a altor procese, cum ar fi temporizatoarele care expiră, ștergerea imaginilor încărcate din memorie care nu vor fi neapărat necesare sau închiderea conexiuni cu servere, cu excepția cazului în care este esențial ca aplicația să finalizeze conexiunile în fundal. Când metoda este invocată într-o aplicație, ar trebui utilizată în esență pentru a suspenda complet aplicația dacă o parte a acesteia nu este necesară pentru a rula în fundal.

3. applicationWillEnterForeground

Această stare este opusă primei stări, în care aplicația va renunța la starea activă. Starea înseamnă pur și simplu că aplicația de dormit va relua din fundal și va apărea în prim-plan în următoarele câteva milisecunde. dezvoltatorii ar trebui să folosească această metodă pentru a relua orice proces care a fost inactiv în timp ce aplicația a fost în fundal. Conexiunile la servere ar trebui să fie restabilite, cronometrele resetate, imaginile și datele încărcate în memorie și alte procese necesare pot fi reluate chiar înainte ca utilizatorul să vadă din nou aplicația încărcată.

4. applicationDidBecomeActive

Starea indică faptul că aplicația tocmai a devenit activă după ce a fost restaurată în prim-plan. Aceasta este o metodă care poate fi folosită pentru a face ajustări suplimentare la interfața cu utilizatorul sau pentru a restabili UI la starea inițială etc. Acest lucru se întâmplă de fapt în momentul în care utilizatorul vede deja aplicația pe afișaj, deci este necesar să determinați cu prudență ce se întâmplă în metoda acestei și în metoda anterioară. Sunt numite unul după altul cu o diferență de câteva milisecunde.

5. applicationWillTerminate

Această stare se întâmplă cu câteva milisecunde înainte de ieșirea aplicației, adică înainte ca aplicația să se termine efectiv. Fie manual din multitasking, fie la oprirea dispozitivului. Metoda ar trebui folosită pentru a salva datele prelucrate, pentru a încheia toate activitățile și pentru a șterge datele care nu vor mai fi necesare.

6. applicationDidReceiveMemoryWarning

Este ultima stare care este cel mai discutată. Acesta este responsabil pentru, dacă este necesar, ștergerea aplicației din memoria iOS dacă folosește resursele sistemului în mod inutil. Nu știu exact ce face iOS cu aplicațiile de fundal, dar dacă are nevoie de o aplicație pentru a elibera resurse pentru alte procese, îi solicită cu un avertisment de memorie să elibereze orice resurse are. Deci această metodă este numită în aplicație. Dezvoltatorii ar trebui să o implementeze astfel încât aplicația să renunțe la memoria pe care a alocat-o, să salveze tot ce este în curs, să ștergă datele inutile din memorie și, în caz contrar, să elibereze în mod adecvat memoria. Este adevărat că mulți dezvoltatori, chiar și începători, nu se gândesc și nu înțeleg astfel de lucruri și atunci se poate întâmpla ca aplicația lor să amenințe durata de viață a bateriei și/sau să consume inutil resursele sistemului, chiar și în fundal.

verdict

Aceste șase stări și metodele lor asociate sunt fundalul tuturor „multitasking-ului” din iOS. este un sistem grozav, atâta timp cât dezvoltatorii nu ignoră faptul că este nevoie să fie responsabili cu privire la ceea ce aplicația aruncă pe dispozitivele utilizatorilor lor, dacă aceștia sunt minimizați sau primesc avertismente de la sistem și așa mai departe.

sursa: macworld.com

Autori: Jakub Požárek, Martin Doubek (ArnieX)

 
Ai si tu o problema de rezolvat? Ai nevoie de sfaturi sau poate găsești aplicația potrivită? Nu ezitați să ne contactați prin formularul din secțiune Consiliere, data viitoare vă vom răspunde la întrebare.

.