Uno sviluppatore ha fatto finalmente chiarezza sul reale funzionamento del multitasking su iOS: le app in background non consumano batteria e non occupano memoria di sistema!
Lo sviluppatore Speirs spiega che non è necessario chiudere manualmente le applicazioni presenti nella barra multitasking in iOS, dato che il 90% delle app che vedete in tale barra non sono “in esecuzione”. In effetti, è meglio pensare alla barra multitasking come ad una sorta di cronologia delle app aperte,e non come ad un task manager.
Gli stessi Genius Apple, molte volte, hanno confuso gli utenti dicendo loro che, per liberare memoria sull’iPhone e limitare il consumo di batteria, è necessario chiudere le app dalla barra del multitasking. Questo consiglio non potrebbe essere più lontano dalla verità. La barra multitasking non è altro che uno strumento di riferimento utile all’utente per passare velocemente ad un’applicazione aperta di recente.
La prova è data dal fatto che, riavviando l’iPhone, avrete ancora tutte le app recenti presenti sulla barra del multitasking. Ci sono tweak per dispositivi jailbreak che mostrano le app che sono realmente in esecuzione in background, ma l’utente normale non dovrebbe mai preoccuparsi di una cosa del genere. Anzi, nella maggior parte dei casi non c’è alcun motivo per il quale andare a chiudere le app dalla barra multitasking. Quando si preme il tasto Home e si chiude un app, infatti, questa sostanzialmente va in stand by. 9 volte su 10, qualsiasi applicazione chiusa con il tasto Home non andrà minimamente ad intaccare la durata della batteria o le prestazioni dell’iPhone. Vi sono, però, delle eccezioni.
Per capirlo è utile classificare le diverse modalità con cui iOS gestisce le singole applicazioni:
- Non è in esecuzione: l’app è stata chiusa con il tasto “x” o non è stata lanciata
- Inattiva: l’app è in primo piano ma non riceve alcun tipo di evento (ad esempio, l’utente ha messo il dispositivo in stand by senza aver chiuso prima l’app con il tasto Home)
- Attiva: lo stato normale di un’app “in uso”
- Background: l’app non è più “sullo schermo”, ma il codice è ancora in esecuzione
- Sospesa: l’app è ancora residente in memoria, ma il codice non viene più eseguito
Non essendoci alcun motivo per rendere le cose più complicate di quanto siano, arriviamo subito al dunque. Secondo Speirs, le app inattive e attive non interessano la nostra discussione.
Tecnicamente, tutte le app rimangono 5 secondi in modalità Background, non appena si esce dalle stesse tramite tasto Home. iOS dà, quindi, ad ogni applicazione una finestra di tempo limitato (5 secondi) prima di farla passare allo stato di Sospesa. Da questo stato, l’applicazione rimane nella memoria integrata in modo tale che possa essere rapidamente avviata dall’utente. Contrariamente a quanto si crede, lo stato Sospesa non va ad occupare risorse di sistema o a inficiare la durata dalle batteria. Se ci sono troppe app in stato Sospeso, iOS è abbastanza intelligente da eliminare inutili sospensioni e da spostare le app allo stato “Non è in esecuzione“.
Dove le cose si fanno complicate è quando si parla di app con permessi speciali per l’esecuzione in background. Tali permessi consentono all’app di rimanere nello stato Background per 10 minuti, invece dei 5 secondi classici. Ad esempio, l’applicazione Intacast può dire al sistema operativo che un podcast è in fase di download, a quel punto iOS dà all’applicazione 10 minuti di tempo per completare il download in background. Una volta passati i 10 minuti, Instacast (o qualsiasi altra applicazione con questi permessi speciali) passa allo stato di Sospesa.
Ci sono poi alcune applicazioni, come Mail, che continuano a funzionare sempre in background. Anche le applicazioni Audio, GPS, VoIP, Edicola e quelle collegate ad accessori e periferiche, rimangono in background fino al termine del loro compito. Secondo l’esperienza dello sviluppatore, l’applicazione Mail va considerata come una delle più dispendiose per iOS: l’app è continuamente alla ricerca di nuove mail e tale chiamata richiede cicli di batteria e di CPU. Purtroppo, l’unico modo per ridurre l’impatto di Mail sul sistema operativo e sulla durata della batteria è quello di killare l’applicazione chiudendola dalla barra del multitasking quando non vi serve. E’ anche possibile impostare Mail in modo tale che vada a recuperare nuovi messaggi ad intervalli di ore, ma la gran parte degli utenti ha la necessità di scaricare continuamente nuove email.
Un altro esempio simile riguarda l’app Skype: le prime versioni erano in grado di annientare la durata della batteria dell’iPad una volta lanciata l’applicazione, ma ora, dopo diversi aggiornamenti, l’app Skype è abbastanza intelligente da gestiree lo stato Background in maniera ottimale. Tutte le app che richiedono un’attività in background dovrebbero quindi essere scritte in maniera egregia (come l’app Mappe), in modo tale da limitare il consumo di batteria.
In pratica, quindi, le uniche volte in cui bisogna davvero chiudere un’app dalla barra multitasking è quando un’app non funziona correttamente. E quando questo accade è colpa dell’applicazione, non di iOS.
Morale della favola? Se volete gestire manualmente la barra multitasking in iOS, non farete altro che perdere il vostro tempo. E se un Genius Apple vi dice di chiudere le app per risparmiare risorse di sistema e batteria, correggetelo.