Tanca l'anunci

Encara hi ha molta gent que no sap com funciona la multitasca a iOS. Per començar, però, cal assenyalar que no es tracta d'una autèntica multitasca, sinó d'una solució molt intel·ligent que no llasta el sistema ni l'usuari.

Sovint es pot escoltar supersticions que les aplicacions que s'executen en segon pla a iOS omplen la memòria operativa, la qual cosa comporta una desacceleració del sistema i una reducció de la durada de la bateria, de manera que l'usuari hauria d'apagar-les manualment. La barra multitasca no conté realment una llista de tots els processos en execució en segon pla, sinó només les aplicacions llançades més recentment. Així, l'usuari no s'ha de preocupar pels processos que s'executen en segon pla, excepte en alguns casos. Quan premeu el botó d'inici, l'aplicació acostuma a passar a dormir o a tancar-se, de manera que ja no carrega ni el processador ni la bateria i, si cal, allibera la memòria necessària.

Això no és una multitasca completa quan tens desenes de processos en execució. Només s'està executant una aplicació en primer pla, que s'atura o s'apaga completament si cal. Només uns quants processos secundaris s'executen en segon pla. És per això que poques vegades trobareu un bloqueig d'aplicacions a iOS, per exemple Android està aclaparat amb aplicacions en execució de les quals l'usuari ha de tenir cura. D'una banda, això fa que el treball amb el dispositiu sigui desagradable i, de l'altra, provoca, per exemple, una arrencada lenta i transicions entre aplicacions.

Tipus de temps d'execució de l'aplicació

L'aplicació del vostre dispositiu iOS es troba en un d'aquests 5 estats:

  • Córrer: l'aplicació s'inicia i s'executa en primer pla
  • Antecedents: encara s'està executant però en segon pla (podem utilitzar altres aplicacions)
  • Suspès: Encara s'està fent servir RAM però no funciona
  • Inactiu: l'aplicació s'està executant però ordres indirectes (per exemple, quan bloquegeu el dispositiu amb l'aplicació en execució)
  • No funciona: L'aplicació ha finalitzat o no s'ha iniciat

La confusió arriba quan l'aplicació passa a un segon pla per no molestar. Quan premeu el botó Inici o feu servir el gest per tancar l'aplicació (iPad), l'aplicació passa a un segon pla. La majoria de les aplicacions es suspenen en qüestió de segons (s'emmagatzemen a la memòria RAM de l'iDevice perquè es puguin iniciar ràpidament, no carreguen tant el processador i així estalvien la bateria) Podríeu pensar que si una aplicació continua utilitzant memòria, heu per eliminar-lo manualment per alliberar-lo. Però no cal que ho facis, perquè iOS ho farà per tu. Si teniu una aplicació exigent suspesa en segon pla, com ara un joc que utilitza una gran quantitat de memòria RAM, iOS l'eliminarà automàticament de la memòria quan sigui necessari i podeu reiniciar-la tocant la icona de l'aplicació.

Cap d'aquests estats es reflecteix a la barra multitasca, el tauler només mostra una llista d'aplicacions llançades recentment, independentment de si l'aplicació està aturada, en pausa o en funcionament en segon pla. També podeu notar que l'aplicació que s'està executant actualment no apareix al tauler Multitasca

Tasques de fons

Normalment, quan premeu el botó Inici, l'aplicació s'executarà en segon pla i, si no l'utilitzeu, s'aturarà automàticament en cinc segons. Així, per exemple, si esteu baixant un podcast, el sistema l'avalua com una aplicació en execució i retarda la terminació deu minuts. Després de deu minuts com a molt tard, el procés s'allibera de la memòria. En resum, no us haureu de preocupar d'interrompre la descàrrega prement el botó d'inici, si no triga més de 10 minuts a completar-la.

Córrer indefinida en segon pla

En cas d'inactivitat, el sistema finalitza l'aplicació en cinc segons, i en el cas de descàrregues, la terminació es retarda deu minuts. No obstant això, hi ha un petit nombre d'aplicacions que requereixen executar-se en segon pla. Aquests són alguns exemples d'aplicacions que es poden executar en segon pla indefinidament a iOS 5:

  • Aplicacions que reprodueixen so i s'han d'interrompre una estona (pausa de música durant una trucada telefònica, etc.),
  • Aplicacions que rastregen la vostra ubicació (programari de navegació),
  • Aplicacions que reben trucades de VoIP, per exemple, si utilitzeu Skype, podeu rebre una trucada fins i tot quan l'aplicació estigui en segon pla,
  • Descàrregues automàtiques (p. ex. Quiosc).

Totes les aplicacions s'han de tancar si ja no fan una tasca (com ara baixades en segon pla). Tanmateix, hi ha excepcions que s'executen en segon pla contínuament, com ara l'aplicació de correu nativa. Si s'executen en segon pla, ocupen memòria, l'ús de la CPU o redueixen la durada de la bateria

Les aplicacions que es poden executar en segon pla de manera indefinida poden fer qualsevol cosa que facin mentre s'executen, des de reproduir música fins a descarregar nous episodis de podcast.

Com he esmentat abans, l'usuari mai necessita tancar les aplicacions que s'executen en segon pla. L'única excepció és quan una aplicació que s'executa en segon pla es bloqueja o no es desactiva correctament del son. L'usuari pot tancar les aplicacions manualment a la barra multitasca, però això rarament passa.

Per tant, en general, no cal gestionar els processos en segon pla perquè el sistema s'encarregarà d'ells. És per això que iOS és un sistema tan fresc i ràpid.

Des de la perspectiva del desenvolupador

L'aplicació pot reaccionar amb un total de sis estats diferents com a part de la multitasca:

1. applicationWillResignActive

En traducció, aquest estat significa que l'aplicació renunciarà com a aplicació activa (és a dir, l'aplicació en primer pla) en el futur (uns quants mil·lisegons). Això passa, per exemple, quan es rep una trucada mentre s'utilitza l'aplicació, però al mateix temps, aquest mètode també provoca aquest estat abans que l'aplicació passi a un segon pla, per la qual cosa cal tenir en compte aquests canvis. Aquest mètode també és adequat perquè, per exemple, suspengui totes les activitats que està realitzant quan hi ha una trucada entrant i s'espera fins al final de la trucada.

2. applicationDidEnterBackground

L'estat indica que l'aplicació ha passat a un segon pla. Els desenvolupadors haurien d'utilitzar aquest mètode per suspendre tots els processos que no necessàriament s'han d'executar en segon pla i esborrar la memòria de les dades no utilitzades i altres processos, com ara temporitzadors que caduquen, esborrar imatges carregades de la memòria que no necessàriament seran necessàries o tancar. connexions amb servidors, tret que sigui fonamental per a l'aplicació completar connexions en segon pla. Quan es crida el mètode a l'aplicació, bàsicament s'hauria d'utilitzar per suspendre completament l'aplicació si no cal que alguna part d'aquesta s'executi en segon pla.

3. applicationWillEnterForeground

Aquest estat és el contrari del primer estat, on l'aplicació renunciarà a l'estat actiu. L'estat simplement significa que l'aplicació en repòs es reprendrà des del segon pla i apareixerà en primer pla en els propers mil·lisegons. els desenvolupadors haurien d'utilitzar aquest mètode per reprendre qualsevol procés que estigués inactiu mentre l'aplicació estava en segon pla. Les connexions als servidors s'han de restablir, els temporitzadors restablir, les imatges i les dades carregades a la memòria i altres processos necessaris es poden reprendre just abans que l'usuari torni a veure l'aplicació carregada.

4. applicationDidBecomeActive

L'estat indica que l'aplicació s'acaba d'activar després de restaurar-se en primer pla. Aquest és un mètode que es pot utilitzar per fer ajustos addicionals a la interfície d'usuari o per restaurar la interfície d'usuari al seu estat original, etc. Això passa realment en el moment en què l'usuari ja veu l'aplicació a la pantalla, per la qual cosa és necessari determinar amb precaució què passa en el mètode d'aquest i en el mètode anterior. S'anomenen un darrere l'altre amb una diferència d'uns mil·lisegons.

5. applicationWillTerminate

Aquest estat es produeix uns quants mil·lisegons abans que l'aplicació surti, és a dir, abans que l'aplicació finalitzi realment. Ja sigui manualment des de la multitasca o en apagar el dispositiu. El mètode s'ha d'utilitzar per desar les dades processades, per finalitzar totes les activitats i per eliminar les dades que ja no seran necessàries.

6. applicationDidReceiveMemoryWarning

És l'últim estat que més es parla. S'encarrega, si cal, d'eliminar l'aplicació de la memòria d'iOS si utilitza recursos del sistema innecessàriament. No sé específicament què fa iOS amb les aplicacions en segon pla, però si necessita una aplicació per alliberar recursos a altres processos, li demana amb un avís de memòria perquè alliberi els recursos que tingui. Per tant, aquest mètode s'anomena a l'aplicació. Els desenvolupadors haurien d'implementar-lo perquè l'aplicació cedi la memòria que té assignada, desi tot el que està en curs, esborri dades innecessàries de la memòria i, en cas contrari, alliberi adequadament la memòria. És cert que molts desenvolupadors, fins i tot principiants, no pensen ni entenen aquestes coses, i llavors pot passar que la seva aplicació amenaci la durada de la bateria i/o consumeixi recursos del sistema innecessàriament, fins i tot en segon pla.

Veredicte

Aquests sis estats i els seus mètodes associats són el rerefons de totes les "multitasques" a iOS. és un gran sistema, sempre que els desenvolupadors no ignorin el fet que cal ser responsable del que l'aplicació llança als dispositius dels seus usuaris, si es minimitzen o reben avisos del sistema, etc.

Font: Macworld.com

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

 
També tens algun problema per resoldre? Necessites assessorament o potser trobes l'aplicació adequada? No dubteu en contactar amb nosaltres mitjançant el formulari de l'apartat Assessorament, la propera vegada et respondrem la teva pregunta.

.