Chiudi l'annuncio

Ci sono ancora molte persone che non sanno come funziona il multitasking su iOS. Tanto per cominciare però è necessario precisare che non si tratta di vero e proprio multitasking, ma di una soluzione molto smart che non grava sul sistema né sull'utente.

Spesso si sente superstizione secondo cui le app eseguite in background in iOS riempiono la memoria operativa, il che porta al rallentamento del sistema e alla durata della batteria, quindi l'utente dovrebbe spegnerle manualmente. La barra multitasking in realtà non contiene un elenco di tutti i processi in background in esecuzione, ma solo delle applicazioni avviate più di recente. Quindi l'utente non deve preoccuparsi dei processi in esecuzione in background tranne in pochi casi. Quando si preme il pulsante Home, l'applicazione di solito va in sospensione o si chiude, in modo da non caricare più il processore o la batteria e, se necessario, liberare la memoria necessaria.

Non si tratta quindi di un vero e proprio multitasking quando si hanno dozzine di processi in esecuzione: solo un'applicazione è sempre in esecuzione in primo piano e, se necessario, viene messa in pausa o disattivata completamente. Solo pochi processi secondari vengono eseguiti in background. Ecco perché raramente incontrerai un crash dell'applicazione su iOS, ad esempio Android è sopraffatto dalle applicazioni in esecuzione di cui l'utente deve occuparsi. Ciò da un lato rende sgradevole il lavoro con il dispositivo e dall'altro provoca, ad esempio, un avvio lento e una transizione tra le applicazioni.

Tipo di runtime dell'applicazione

L'applicazione sul tuo dispositivo iOS si trova in uno di questi 5 stati:

  • Corsa: l'applicazione viene avviata ed è in esecuzione in primo piano
  • Sfondo: è ancora in esecuzione ma in background (possiamo usare altre applicazioni)
  • Sospeso: Usa ancora la RAM ma non funziona
  • Inattivo: l'applicazione è in esecuzione ma comandi indiretti (ad esempio quando si blocca il dispositivo con l'applicazione in esecuzione)
  • Non correndo: L'applicazione è stata terminata o non è stata avviata

La confusione arriva quando l'app va in background per non disturbare. Quando premi il pulsante Home o usi il gesto per chiudere l'applicazione (iPad), l'applicazione passa in background. La maggior parte delle app vengono sospese in pochi secondi (sono archiviate nella RAM dell'iDevice in modo da poter essere avviate rapidamente, non caricano tanto il processore e quindi risparmiano la durata della batteria) Potresti pensare che se un'app continua a utilizzare la memoria, hai per eliminarlo manualmente per liberarlo. Ma non sei obbligato a farlo, perché iOS lo farà per te. Se hai un'applicazione impegnativa sospesa in background, come un gioco che utilizza una grande quantità di RAM, iOS la rimuoverà automaticamente dalla memoria quando necessario e potrai riavviarla toccando l'icona dell'applicazione.

Nessuno di questi stati si riflette nella barra multitasking, il pannello mostra solo un elenco delle app avviate di recente indipendentemente dal fatto che l'app sia arrestata, in pausa o in esecuzione in background. Potresti anche notare che l'applicazione attualmente in esecuzione non viene visualizzata nel pannello Multitasking

Attività in background

Normalmente, quando si preme il pulsante Home, l'applicazione verrà eseguita in background e, se non la si utilizza, verrà automaticamente messa in pausa entro cinque secondi. Quindi, se stai scaricando un podcast, ad esempio, il sistema lo valuta come un'applicazione in esecuzione e ne ritarda la conclusione di dieci minuti. Al massimo dopo dieci minuti il ​​processo viene rilasciato dalla memoria. Insomma, non devi preoccuparti di interrompere il download premendo il pulsante Home, se non ci vogliono più di 10 minuti per completarlo.

Funzionamento indefinito in background

In caso di inattività, il sistema termina l'applicazione entro cinque secondi, mentre in caso di download la terminazione viene ritardata di dieci minuti. Tuttavia, esiste un numero limitato di applicazioni che richiedono l'esecuzione in background. Ecco alcuni esempi di app che possono essere eseguite in background a tempo indeterminato in iOS 5:

  • Applicazioni che riproducono suoni e che devono essere interrotte per un po' (mettere in pausa la musica durante una telefonata, ecc.),
  • Applicazioni che tracciano la tua posizione (software di navigazione),
  • Applicazioni che ricevono chiamate VoIP, ad esempio se usi Skype, puoi ricevere una chiamata anche quando l'applicazione è in background,
  • Download automatici (es. Edicola).

Tutte le applicazioni dovrebbero essere chiuse se non stanno più eseguendo un'attività (come i download in background). Tuttavia, esistono eccezioni che vengono eseguite continuamente in background, come l'app Mail nativa. Se vengono eseguiti in background, occupano memoria, utilizzo della CPU o riducono la durata della batteria

Le app che possono essere eseguite in background a tempo indeterminato possono fare qualsiasi cosa mentre sono in esecuzione, dalla riproduzione di musica al download di nuovi episodi di Podcast.

Come ho detto prima, l'utente non ha mai bisogno di chiudere le app in esecuzione in background. L'unica eccezione a ciò è quando un'app in esecuzione in background si arresta in modo anomalo o non si riattiva correttamente dalla modalità di sospensione. L'utente può poi chiudere manualmente le applicazioni nella barra multitasking, ma ciò accade raramente.

Quindi, in generale, non è necessario gestire i processi in background perché se ne occuperà il sistema stesso. Ecco perché iOS è un sistema così fresco e veloce.

Dal punto di vista di uno sviluppatore

Nell'ambito del multitasking l'applicazione può reagire con un totale di sei stati diversi:

1. l'applicazione si dimetterà attiva

Nella traduzione, questo stato significa che l'applicazione si dimetterà dall'applicazione attiva (ovvero, l'applicazione in primo piano) in futuro (una questione di pochi millisecondi). Ciò accade, ad esempio, quando si riceve una chiamata durante l'utilizzo dell'applicazione, ma allo stesso tempo questo metodo provoca anche questo stato prima che l'applicazione passi in background, quindi è necessario tenere conto di queste modifiche. Questo metodo è adatto anche affinché, ad esempio, sospenda tutte le attività che sta svolgendo quando c'è una chiamata in arrivo e attende fino alla fine della chiamata.

2. applicazioneDidEnterBackground

Lo stato indica che l'applicazione è passata in background. Gli sviluppatori dovrebbero utilizzare questo metodo per sospendere tutti i processi che non devono necessariamente essere eseguiti in background e cancellare la memoria dai dati non utilizzati e da altri processi, come la scadenza dei timer, la cancellazione delle immagini caricate dalla memoria che non saranno necessariamente necessarie o la chiusura connessioni con i server, a meno che non sia fondamentale per l'applicazione completare le connessioni in background. Quando il metodo viene richiamato in un'applicazione, dovrebbe essere utilizzato essenzialmente per sospendere completamente l'applicazione se non è necessario che alcune parti di essa vengano eseguite in background.

3. l'applicazione entrerà in primo piano

Questo stato è l'opposto del primo stato, in cui l'applicazione passerà allo stato attivo. Lo stato significa semplicemente che l'app in sospensione riprenderà dallo sfondo e apparirà in primo piano entro i prossimi millisecondi. gli sviluppatori dovrebbero utilizzare questo metodo per riprendere tutti i processi inattivi mentre l'applicazione era in background. Le connessioni ai server dovrebbero essere ristabilite, i timer reimpostati, le immagini e i dati caricati in memoria e altri processi necessari possono riprendere subito prima che l'utente veda nuovamente l'applicazione caricata.

4. applicazioneDidBecomeActive

Lo stato indica che l'applicazione è appena diventata attiva dopo essere stata ripristinata in primo piano. Si tratta di un metodo che può essere utilizzato per apportare ulteriori modifiche all'interfaccia utente o per ripristinare l'interfaccia utente al suo stato originale, ecc. Ciò avviene in realtà nel momento in cui l'utente vede già l'applicazione sul display, quindi è necessario determinare con cautela cosa succede nel metodo di questo e nel metodo precedente. Vengono chiamati uno dopo l'altro con una differenza di pochi millisecondi.

5. l'applicazione terminerà

Questo stato si verifica pochi millisecondi prima della chiusura dell'applicazione, ovvero prima che l'applicazione termini effettivamente. O manualmente dal multitasking o quando si spegne il dispositivo. Il metodo dovrebbe essere utilizzato per salvare i dati elaborati, per terminare tutte le attività e per cancellare i dati che non saranno più necessari.

6. applicationDidReceiveMemoryWarning

È l’ultimo stato quello più discusso. Si occupa, se necessario, di rimuovere l'applicazione dalla memoria di iOS se utilizza inutilmente le risorse di sistema. Non so nello specifico cosa faccia iOS con le app in background, ma se ha bisogno di un'app per rilasciare risorse ad altri processi, le richiede con un avviso di memoria di rilasciare tutte le risorse di cui dispone. Quindi questo metodo viene chiamato nell'applicazione. Gli sviluppatori dovrebbero implementarlo in modo che l'applicazione rinunci alla memoria allocata, salvi tutto ciò che è in corso, cancelli i dati non necessari dalla memoria e altrimenti liberi adeguatamente memoria. È vero che molti sviluppatori, anche principianti, non pensano o non capiscono queste cose, e poi può succedere che la loro applicazione minacci la durata della batteria e/o consumi inutilmente risorse di sistema, anche in background.

Verdikt

Questi sei stati e i metodi ad essi associati fanno da sfondo a tutto il "multitasking" di iOS. è un ottimo sistema, purché gli sviluppatori non ignorino il fatto che è necessario essere responsabili di ciò che l'applicazione lancia sui dispositivi dei propri utenti, se sono ridotti a icona o ricevono avvisi dal sistema e così via.

Fonte: macworld.com

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

 
Anche tu hai un problema da risolvere? Hai bisogno di consigli o magari trovi la giusta applicazione? Non esitate a contattarci tramite il form presente nella sezione Consulenza, la prossima volta risponderemo alla tua domanda.

.