Quanto c'è di multitasking in iOS? Scopriamo cosa c'è dietro

Il multitasking è la capacità di un sistema operativo di eseguire contemporaneamente più processi. O meglio, di darne l’illusione poiché, in realtà, un processore single-core è in grado di fare una sola operazione alla volta. Tuttavia, la velocità con cui ciò avviene è talmente rapida da convincerci del fatto che più processi sono in esecuzione contemporanea. Nei dispositivi mobili di Apple il multitasking è stato introdotto con iOS 4, permettendo in questo modo di eseguire più applicazioni allo stesso momento. Siete convinti che sia davvero così? Io non ne sarei tanto sicuro.

Le risorse di cui dispongono uno smartphone e un computer sono profondamente diverse, in primis per quanto riguarda la batteria. Da qui, dunque, si riconosce di non poter impegnare il processore di uno smartphone nell’esecuzione contemporanea di diversi processi. Non si ricorre, quindi, a quello che definirei multitasking integrale, di cui possiamo invece disporre su computer.

Di questo si sospetta anche prestando attenzione al comportamento dell’App Switcher, ossia la barra del multitasking. Ipotizziamo di lasciare alcune app in background e di spegnere l’iPhone senza averle prima chiuse manualemente tutte. Quando riaccenderemo lo smarpthone, noteremo che le stesse app sono ancora presenti nell’App Switcher, nonostante non siano in esecuzione. In questo frangente l’App Swithcer funge più da storico, mostrando le app lanciate più recentemente.

Allora cosa c’è sotto la parola multitasking in iOS? Non trattandosi di un multitasking effettivo in tutti i sensi, deve esserci qualche limitazione. Infatti il sistema operativo mobile di Apple prevede cinque diverse tipologie di multitasking, usufruibili agli sviluppatori attraverso le API, le quali determinano comportamenti specifici per le app che ne fanno uso:

  • Audio Background. Se l’app viene spostata in background la riproduzione audio continuerà. Soltanto chiudendola effettivamente dall’App Switcher tutte le risorse occupate dal processo verranno liberate. L’app Musica implementa un multitasking di questo tipo
  • VoIP in Background. Consente di fare altre operazioni mentre si parla a telefono. Una situazione del genere è denotata dalla barra di stato a doppia altezza con un colore di sfondo
  • Background Location. Un’app con un multitasking di questo tipo è in grado di monitorare costantemente la posizione tramite GPS anche se non è in foreground
  • Local Notification. È una variante di multitasking che richiede una connessione a Internet. Un’app può avvisarci mediante una semplice notifica push sulla base di un’informazione ricevuta attraverso la rete. Un tipico esempio di questa tipologie sono le app che ci avvisano quando viene seganto unn goal sui campi di Serie A
  • Task Completion. Permette di completare le operazioni quando si esce dall’applicazione.

Un’app che fa uso di una di queste tipologie di multitasking può quindi trovarsi in diversi stati durante la sua “vita” nel sistema:

  • Non In Esecuzione: non occupa nessuna risorsa; ad esempio l’app non è stata mai lanciata o è stata chiusa
  • Inattiva: l’app è in foreground ma è in attesa di determinati eventi. Un esempio di app inattiva è quando blocchiamo l’iPhone mentre stiamo usando un’app
  • Attiva: è lo stato comune di app in esecuzione
  • In Background: l’app non è presente in primo piano sul display, ma il suo codice è in esecuzione
  • Sospesa: l’app è residente in memoria, ma il suo codice non è in esecuzione.

Da questa descrizione tecnica si evince che non tutte le app si comportano allo stesso modo. Per motivi legati alla durata della batteria è comunque importante chiudere le applicazioni dall’App Switcher ogni qualvolta non se ne ha più bisogno.

Rispondi