Tots coneixem la lliçó "multitasking = la capacitat de realitzar diversos processos al mateix temps". El fem servir als nostres ordinadors sense ser especialment conscients de la seva presència. El canvi entre aplicacions o finestres d'una aplicació es produeix (per a nosaltres) en temps real i donem per feta aquesta capacitat del sistema operatiu.
Tasca diferent
El sistema operatiu assigna el processador a totes les aplicacions en intervals de temps reduïts. Aquests períodes de temps són tan reduïts que no els podem notar, de manera que sembla com si totes les aplicacions estiguessin utilitzant el processador al mateix temps. Podríem pensar que sí multitasca a iOS 4 funciona exactament igual. No és així. El motiu principal és, per descomptat, la capacitat de la bateria. Si realment es quedessin executant totes les aplicacions en segon pla, probablement hauríem de buscar un sòcol en poques hores.
La majoria de les aplicacions compatibles amb iOS 4 es posen en "mode suspès" o es posen en suspensió després de prémer el botó d'inici. Una analogia podria ser tancar la tapa d'un ordinador portàtil, que passa immediatament al mode de repòs. Després d'obrir la tapa, l'ordinador portàtil es desperta i tot està exactament en el mateix estat que abans de tancar la tapa. A més, hi ha aplicacions on prémer el botó Inici fa que s'acabin. I amb això ens referim a una terminació real. Els desenvolupadors poden triar quin d'aquests mètodes utilitzar.
Però hi ha una altra categoria d'aplicacions. Aquestes són les aplicacions que realment s'executen en segon pla, tot i que esteu fent alguna cosa completament diferent al vostre iDevice. Skype és un bon exemple perquè necessita una connexió a Internet constant. Altres exemples serien aplicacions que reprodueixen música en segon pla (Pandora) o aplicacions que requereixen un ús constant del GPS. Sí, aquestes aplicacions consumeixen la bateria fins i tot quan s'executen en segon pla.
Dormir o disparar?
Algunes aplicacions compatibles amb iOS 4, que s'haurien de posar en suspensió (posada en "mode suspès") després de prémer el botó d'inici, continuen executant-se en segon pla. Apple va donar als desenvolupadors exactament deu minuts perquè l'aplicació completés la seva tasca, fos el que fos. Suposem que esteu baixant un fitxer a GoodReader. De sobte algú vol trucar-te i només has d'acceptar aquesta important trucada. La trucada no va durar més de deu minuts, tornareu a l'aplicació GoodReader. És possible que el fitxer ja s'hagi baixat o encara s'està baixant. Què passa si la trucada triga més de deu minuts? L'aplicació, en el nostre cas GoodReader, haurà d'aturar la seva activitat i dir a iOS que es pot posar en suspensió. Si no ho fa, el mateix iOS la cancel·larà sense pietat.
Ara ja saps la diferència entre la multitasca "mòbil" i "d'escriptori". Tot i que la fluïdesa i la velocitat de canvi entre aplicacions són importants per a un ordinador, la durada de la bateria és sempre el més important per als dispositius mòbils. La multitasca també s'havia d'adaptar a aquest fet. Per tant, després de llegir aquest article, si premeu dues vegades el botó Inici, ja no veureu la "barra d'aplicacions en execució en segon pla", sinó bàsicament només la "llista d'aplicacions utilitzades recentment".
Autor: Daniel HruškaFont: onemoretap.com
hmm, interessant :) Sempre vaig pensar que sempre era semblant a com es pot fer a Unix. Si l'aplicació s'ha assignat zero temps de CPU i el procés només es troba a la memòria, s'han assignat tots els recursos. així que vaig haver de prémer a casa dues vegades i aturar immediatament l'aplicació per eliminar-la. Aleshores, això vol dir que encara que hi hagi una icona d'aplicació al full ocult inferior, l'aplicació encara està tancada fa molt de temps (després de 10 minuts)?
A la llista inferior, hi ha simplement les aplicacions obertes més recentment, per les quals algunes d'elles encara es poden executar, algunes estan suspeses i algunes es tanquen completament. L'eliminació manual de l'aplicació de la llista té l'"efecte secundari" que si s'està executant (o està suspesa) s'acabarà.
L'aplicació ha d'informar-se d'aquests 10 minuts addicionals i no es garanteix que els obtingui.
Bé, això no em va desfer de la meva obsessió per tancar l'aplicació de la llista (i si accidentalment menja recursos, oi? :-D)
Entenc que els 10 minuts són per a aplicacions que necessiten funcionar en segon pla i no entren a la categoria "Skype, GPS i reproducció de música". Altres aplicacions passen al mode suspès i romanen a la memòria fins que la memòria es necessita per a altres coses.
El mode suspès té l'avantatge que si després necessiteu matar l'aplicació, no perdràs les seves dades, tot es desarà en el moment de canviar a suspès.
o, per exemple, en el cas de la reproducció, l'equivalent a l'ordre bg / fg
I què passa amb el reproductor o altres aplicacions que s'executen en segon pla durant qualsevol període de temps? Vull dir, puc "escollir" com a desenvolupador, o això ha de ser aprovat per Apple d'alguna manera?
Perquè l'aplicació s'executi realment en segon pla durant un temps il·limitat, ha de fer (registrar) una de les accions següents:
- Utilitzeu els serveis d'ubicació (GPS)
- Reproduir música de fons
- Utilitzeu VOIP (veu sobre IP)
Segons el títol (una mirada sota el capó), esperava que l'article contingués una explicació una mica més extensa amb detalls tècnics. Això sembla més un perex a l'article. Si és perex, quan és la seqüela? Pots obtenir un reemborsament? :-)
i què t'agradaria saber amb més detall?
D'un article amb "sota el capó" al títol, m'esperaria una descripció tècnica detallada (l'autor podria analitzar, per exemple, la sobrecàrrega en canviar d'aplicació, o com es gestiona l'accés simultani als recursos del sistema), una comparació amb altres models. (per exemple, amb un iPhone amb jailbreak). És ideal fer una còpia de seguretat amb algunes mesures. Simplement esperava molt més d'un article que té "sota el capó" al títol que aquesta descripció tan superficial.
Hi ha algun client icq que s'executi contínuament en segon pla com Skype i no interromp la connexió?
l'aplicació té 10 segons per entrar en mode de suspensió, no 10 minuts... i durant aquest procés, algunes parts poden "penjar" o no als serveis de backend, alguns dels quals ja s'han enumerat més amunt; això és el que Apple anomena "intel·ligent". "multitasca.... aleshores el sistema la va enderrocar
L'aplicació pot requerir més temps si s'està baixant, carregant o processant alguna cosa. No té res a veure amb el GPS, la VoIP o la reproducció de música, que funcionen en mode minimalista durant un temps il·limitat.