In un documento ufficiale Apple spiega dettagliatamente come funziona il multitasking su iPhone 3GS (e in futuro su iPad), mettendo in luce il fatto che non si tratta di un sistema classico ma di una rivisitazione del concetto di “background”.
In pratica le applicazioni create utilizzando il nuovo SDK 4.0 non vengono più interrotte quando l’utente preme il tasto Home, ma vengono trasferite in quello che Apple chiama “a background execution context“, e cioè quella barra di applicazioni aperte che abbiamo già visto nei giorni scorsi.
Per molte applicazioni questo significa che esse entrano in uno stato di “sospensione” nell’esecuzione subito dopo aver premuto il tasto Home. Mantenere l’applicazione in memoria evita il successivo ciclo di caricamento in caso di riapertura e consente all’applicazione semplicemente di riattivare se stessa, migliorando l’esperienza complessiva dell’utente.
Sospendere l’applicazione migliora le performance del sistema, riducendo al minimo l’uso della memoria e le prestazioni dell’applicazione in primo piano.
Sebbene la maggior parte delle applicazioni vengono sospese poco dopo essere state messe in background (la parola background viene utilizzata più volte dalla stessa Apple), quelle che necessitano di continuare a lavorare in background, possono farlo utilizzando una delle seguenti tecniche:
- Un’applicazione può richiedere al sistema una quantità finita di tempo necessario per completare qualche compito importante (stiamo trasferendo un file da computer a Mac o scaricando un file da internet utilizzando un’applicazione apposita, come GoodReader: possiamo metterla in background e utilizzare un’altra applicazione senza che il trasferimento venga interrotto);
- Un’applicazione può sfruttare uno dei servizi specifici messi a disposizione da Apple e che richiedono l’esecuzione in background;
- Un’applicazione può sfruttare le notifiche locali per generare un avviso in un’ora prestabilita, anche se l’applicazione stessa non è aperta (pensate ad una classica applicazione sveglia: fino ad oggi per poter avere l’alert era necessario tenere aperta l’applicazione, con il nuovo firmware potremo semplicemente avviarla e metterla in background).
Indipendentemente dal fatto che l’applicazione sia sospesa o continui a girare in background, è richiesto un lavoro supplementare per gli sviluppatori. Allo stato attuale nessuna applicazione è in grado di sfruttare il multitasking ideato da Apple, in quanto è necessario implementare determinate API perchè tali app sfruttino proprio il multitasking. Aspettiamoci quindi numerosi aggiornamenti per tantissime applicazioni nei prossimi mesi.
Cosa significa questo? Che il multitasking funzionerà soltanto sulle applicazioni che implementeranno una delle sette API presentate da Apple:
- Background Audio, che consente di utilizzare applicazioni come Pandora tramaite multitaksing (potremo ad esempio ascoltare la radio anche se l’applicazione relativa è stata “chiusa”);
- Background VoIP: le applicazioni come Skype saranno in grado di ricevere chiamate anche mentre si stanno utilizzando altre applicazioni e persino quando si è sulla lockscreen, con l’iPhone bloccato.
- Background Location, relativa alle applicazioni che sfruttano il GPS. Fino ad oggi chiudendo un’applicazione come TomTom si perdeva la posizione GPS, mentre con il multitasking questo non accadrà più. Ad esempio un navigatore satallitare che sfrutti questa API sarebbe in grado di avvertire l’utente ogni qual volta viene data una nuova indicazione, anche senza avere in primo piano l’applicazione stessa;
- Local Notification: le notifiche locali di cui abbiamo parlato prima;
- Notifiche Push: ormai famose in quanto esistenti da tempo, sfruttano la connessione internet per poter inviare messaggi all’utente (importante per le applicazioni di IM, ad esempio);
- Task Completion: possibilità di effettuare delle operazioni chiudendo l’applicazione (ne abbiamo parlato prima, con l’esempio di GoodReader);
- Fast app switching: la API che consente all’utente di passare da un’applicazione all’altra e agli sviluppatori di far riprendere lo stato di un’applicazione così dove l’utente l’aveva lasciata.
Una nota a parte meritano i giochi: al momento non sembra possibile lasciare in background un gioco e riprenderlo esattamente da dove lo avevamo lasciato, questo perchè manca una API specifica per questa funzione. Gli sviluppatori potranno continuare ad utilizzare i salvataggi automatici, che consentono all’utente di riprendere velocemente da una determinata posizione.
E’ chiaro quindi che gran parte del lavoro dovrà essere fatto dagli sviluppatori: allo stato attuale il multitasking ideato da Apple è un contenitore vuoto, che andrà riempito piano piano tramite aggiornamenti delle varie App.
Si tratta quindi di una vera e propria rivisitazione del concetto di background classico, a cui tutti noi siamo abituati. Apple ha scelto una via alternativa, che potrebbe rivelarsi vincente se effettivamente prestazioni e batteria non ne risentiranno, e azzardata se invece il sistema alla lunga risulti macchinoso e poco funzionale, soprattutto per il fatto che non tutte le applicazioni potranno effettivamente beneficiarne.