Cu toții cunoaștem lecția „multitasking = capacitatea de a efectua mai multe procese în același timp”. Îl folosim în computerele noastre fără să fim deosebit de conștienți de prezența lui. Comutarea între aplicații sau ferestre ale unei aplicații are loc (pentru noi) în timp real și considerăm această capacitate a sistemului de operare de la sine înțeles.
Sarcina diferită
Sistemul de operare alocă procesorul tuturor aplicațiilor în intervale de timp mici. Aceste perioade de timp sunt atât de mici încât nu le putem observa, așa că se pare că toate aplicațiile folosesc procesorul în același timp. Am putea crede că da multitasking în iOS 4 functioneaza exact la fel. Nu este asa. Motivul principal este, desigur, capacitatea bateriei. Dacă toate aplicațiile ar fi cu adevărat lăsate să ruleze în fundal, probabil că în câteva ore ar trebui să căutăm un socket.
Majoritatea aplicațiilor compatibile cu iOS 4 sunt puse în „modul suspendat” sau puse în stare de repaus după apăsarea butonului Acasă. O analogie ar putea fi închiderea capacului unui laptop, care intră imediat în modul de repaus. După deschiderea capacului, laptopul se trezește și totul este exact în aceeași stare ca înainte ca capacul să fie închis. În plus, există aplicații în care apăsarea butonului Acasă provoacă oprirea acestora. Și prin asta ne referim la o terminare reală. Dezvoltatorii au posibilitatea de a alege care dintre aceste metode să folosească.
Dar există o altă categorie de aplicații. Acestea sunt aplicațiile care rulează cu adevărat în fundal, chiar dacă faci ceva complet diferit pe iDevice. Skype este un bun exemplu deoarece are nevoie de o conexiune constantă la internet. Alte exemple ar putea fi aplicațiile care redau muzică de fundal (Pandora) sau aplicațiile care necesită utilizarea constantă a GPS-ului. Da, aceste aplicații îți consumă bateria chiar și atunci când rulează în fundal.
Dormi sau împușcă?
Anumite aplicații compatibile cu iOS 4, care ar trebui puse în stare de repaus (puse în „modul suspendat”) după apăsarea butonului Acasă, continuă să ruleze în fundal. Apple a oferit dezvoltatorilor exact zece minute pentru ca aplicația să-și îndeplinească sarcina, oricare ar fi fost. Să presupunem că descărcați un fișier în GoodReader. Dintr-o dată cineva vrea să te sune și tu trebuie doar să accepți acel apel important. Apelul nu a durat mai mult de zece minute, veți reveni la aplicația GoodReader. Este posibil ca fișierul să fie deja descărcat sau încă în curs de descărcare. Ce se întâmplă dacă apelul durează mai mult de zece minute? Aplicația, în cazul nostru GoodReader, va trebui să-și oprească activitatea și să-i spună iOS că poate fi pusă în stare de adormire. Dacă nu o face, ea va fi terminată fără milă de iOS însuși.
Acum știți diferența dintre multitasking „mobil” și „desktop”. În timp ce fluiditatea și viteza de comutare între aplicații sunt importante pentru un computer, durata de viață a bateriei este întotdeauna cel mai important lucru pentru dispozitivele mobile. Multitasking-ul trebuia, de asemenea, adaptat acestui fapt. Prin urmare, după ce ați citit acest articol, dacă apăsați de două ori butonul Acasă, nu veți mai vedea „bara de aplicații care rulează în fundal”, ci în esență doar „lista aplicațiilor utilizate recent”.
Autor: Daniel Hruškasursa: onemoretap.com
hmm, interesant :) Întotdeauna am crezut că a fost întotdeauna similar cu modul în care se poate face pe Unix. Că aplicației i s-a alocat zero timp CPU și procesul se află doar în memorie, toate resursele au fost alocate. așa că a trebuit să apăs acasă de două ori și să opresc imediat aplicația pentru a o șterge. Deci asta înseamnă că, chiar dacă există o pictogramă de aplicație în foaia de jos ascunsă, aplicația este încă închisă cu mult timp în urmă (după 10 minute)?
În lista de jos, există pur și simplu cele mai recent aplicații deschise, prin care unele dintre ele pot încă rula, altele sunt suspendate, iar altele sunt terminate complet. Eliminarea manuală a aplicației din listă are „efectul secundar” că, dacă se întâmplă să ruleze (sau este suspendată), aceasta va fi terminată.
Aplicația trebuie să spună despre acele 10 minute suplimentare și nu este garantat că le va primi.
Ei bine, asta nu m-a scăpat de obsesia mea de a închide aplicația din listă (dacă din greșeală mănâncă resurse, nu? :-D)
Înțeleg că cele 10 minute sunt pentru aplicațiile care trebuie să funcționeze în fundal și nu se încadrează în categoria „skype, GPS și redare muzică”. Alte aplicații trec în modul suspendat și rămân în memorie până când memoria este necesară pentru alte lucruri.
Modul suspendat are avantajul că, dacă trebuie să omorâți aplicația, nu veți pierde datele acesteia, totul va fi salvat în momentul trecerii la suspendat.
sau, de exemplu, în cazul redării, echivalentul comenzii bg / fg
Și cum rămâne cu playerul sau alte aplicații care rulează în fundal pentru o perioadă de timp? Adică, pot să „aleleg” ca dezvoltator sau acest lucru trebuie să fie aprobat de Apple cumva?
Pentru ca aplicația să ruleze cu adevărat în fundal pentru un timp nelimitat, trebuie să facă (înregistrează) una dintre următoarele acțiuni:
- Utilizați serviciile de localizare (GPS)
- Redați muzică în fundal
- Utilizați VOIP (Voice over IP)
După titlu (o privire sub capotă), mă așteptam ca articolul să conțină o explicație ceva mai amplă cu detalii tehnice. Acesta arată mai mult ca un perex la articol. Dacă este Perex, când este continuarea? Puteți obține o rambursare? :-)
si ce ai vrea sa stii mai detaliat?
De la un articol cu „sub capotă” în titlu, m-aș aștepta la o descriere tehnică detaliată (autorul ar putea analiza, de exemplu, supraîncărcarea la comutarea aplicațiilor, sau cum se rezolvă accesul simultan la resursele sistemului), o comparație cu alte modele (de exemplu, cu un iPhone cu jailbreak). Este ideal să-l susțineți cu unele măsurători. Pur și simplu mă așteptam la mult mai mult de la un articol care are „sub capotă” în titlu decât această descriere foarte superficială.
Există vreun client icq care rulează continuu în fundal ca Skype și nu întrerupe conexiunea?
aplicația are 10 secunde pentru a intra în modul suspendare, nu 10 minute... și în timpul acestui proces, unele părți se pot „bloca” sau nu pe serviciile backend, dintre care unele au fost deja enumerate mai sus - asta este ceea ce Apple numește „inteligent " multifunctional.... apoi sistemul a doborât-o
Aplicația poate necesita timp suplimentar dacă ceva este descărcat, încărcat sau procesat. Nu are nicio legătură cu GPS-ul, VoIP sau redarea muzicii, care rulează în modul minimalist timp nelimitat.