Chiudi annunziu

Ci hè ancu assai persone chì ùn sanu micca cumu funziona u multitasking in iOS. Per principià, però, hè necessariu di nutà chì questu ùn hè micca un veru multitasking, ma una suluzione assai intelligente chì ùn grava micca u sistema o l'utilizatore.

Spessu si pò sente superstizioni chì l'applicazioni in sfondate in iOS riempianu a memoria operativa, chì porta à a rallentazione di u sistema è à a vita di a bateria, cusì l'utilizatore deve disattivà manualmente. A barra multitasking ùn cuntene micca veramente una lista di tutti i prucessi di fondo in esecuzione, ma solu l'applicazioni più recenti lanciate. Dunque, l'utilizatore ùn deve micca preoccupatu di i prucessi chì funzionanu in fondo, salvu in uni pochi di casi. Quandu appughjà u buttone Home, l'applicazione generalmente si dorme o si chjude, in modu chì ùn carica più u processore o a bateria è, se ne necessariu, libera a memoria necessaria.

Allora ùn hè micca un multitasking cumpletu quandu avete decine di prucessi in esecuzione. Una sola applicazione hè sempre in esecuzione in u primu pianu, chì hè in pausa o disattivata completamente se ne necessariu. Solu uni pochi di prucessi secundarii currianu in fondo. Hè per quessa chì raramente scuntrà un crash di l'applicazione in iOS, per esempiu Android hè sopraffattu cù l'applicazioni in esecuzione chì l'utilizatore hà da piglià cura. Da un latu, questu face u travagliu cù u dispusitivu dispiacevule, è da l'altra banda, provoca, per esempiu, lentu startup è transizioni trà l'applicazioni.

Tipu di runtime di l'applicazione

L'applicazione nantu à u vostru dispositivu iOS hè in unu di sti 5 stati:

  • corsa: l'applicazione hè iniziata è funziona in u primu pianu
  • Sfondate: hè sempre in esecuzione ma in sfondate (pudemu aduprà altre applicazioni)
  • Suspendu: Sempre usendu RAM ma micca in esecuzione
  • Inattivu: l'applicazione hè in esecuzione ma cumandamenti indiretti (per esempiu, quandu chjude u dispusitivu cù l'applicazione in esecuzione)
  • Ùn funziona micca: L'applicazione hè finita o ùn hà micca iniziatu

A cunfusione vene quandu l'app entra in fondo per ùn disturbà. Quandu pressu u buttone Home o aduprate u gestu per chjude l'applicazione (iPad), l'applicazione passa in fondo. A maiò parte di l'applicazioni sò sospese in sicondi (Sò guardati in a RAM di l'iDevice in modu chì ponu esse lanciati rapidamente, ùn caricanu micca u processatore tantu è cusì risparmià a vita di a bateria) Puderete pensà chì, se una app cuntinueghja aduprà a memoria, avete per sguassà manualmente per liberà. Ma ùn avete micca fà quessa, perchè iOS vi farà per voi. Se tenete una applicazione esigente sospesa in u sfondate, cum'è un ghjocu chì usa una grande quantità di RAM, iOS a sguasserà automaticamente da a memoria quandu hè necessariu, è pudete ripiglià toccu l'icona di l'applicazione.

Nisunu di sti stati sò riflessi in a barra di multitasking, u pannellu mostra solu una lista di l'applicazioni lanciate recentemente, indipendentemente da se l'app hè fermata, in pausa o in sfondate. Puderete ancu nutà chì l'applicazione chì hè attualmente in esecuzione ùn appare micca in u pannellu Multitasking

I travaglii di fondo

Normalmente, quandu appughjà u buttone Home, l'applicazione correrà in sfondate, è s'ellu ùn l'avete micca utilizatu, si mette in pausa automaticamente in cinque seconde. Dunque, se scaricate un podcast, per esempiu, u sistema l'evalueghja cum'è una applicazione in esecuzione è ritarda a terminazione di deci minuti. Dopu à u più tardi deci minuti, u prucessu hè liberatu da a memoria. In cortu, ùn devi micca preoccupatu di interrompe u vostru scaricamentu pressu u buttone Home, s'ellu ùn dura più di 10 minuti per compie.

Corsa indefinitu in fondo

In u casu di inattività, u sistema termina l'applicazione in cinque seconde, è in u casu di scaricamentu, a terminazione hè ritardata di deci minuti. Tuttavia, ci sò un picculu numeru di appiicazioni chì necessitanu di correre in fondo. Eccu alcuni esempi d'applicazioni chì ponu eseguisce in fondu indefinitu in iOS 5:

  • L'applicazioni chì riproducenu u sonu è devenu esse interrotte per un certu tempu (pausa a musica durante una telefonata, etc.),
  • Applicazioni chì traccianu a vostra situazione (software di navigazione),
  • L'applicazioni chì ricevenu chjamate VoIP, per esempiu, se utilizate Skype, pudete riceve una chjama ancu quandu l'applicazione hè in fondo,
  • Scaricamentu automaticu (per esempiu, Newsstand).

Tutte l'applicazioni devenu esse chjuse s'ellu ùn anu più realizatu un compitu (cum'è scaricamentu di fondo). Tuttavia, ci sò eccezzioni chì correnu in u sfondate continuamente, cum'è l'app nativa Mail. S'elli sò in sfondate, piglianu memoria, usu di CPU o riduce a vita di a bateria

L'applicazioni chì sò permesse di eseguisce in u fondu indefinitu ponu fà tuttu ciò chì facenu mentre sò in esecuzione, da ghjucà musica à scaricà novi episodi di Podcast.

Cumu l'aghju dettu prima, l'utilizatore ùn hà mai bisognu di chjude l'applicazioni in sfondate. L'unica eccezzioni à questu hè quandu una app in esecuzione in sfondate crashes o ùn si sveglia micca bè da u sonnu. L'utilizatore pò tandu chjude l'applicazioni manualmente in a barra multitasking, ma questu succede raramente.

Dunque, in generale, ùn avete micca bisognu di gestisce i prucessi di fondo perchè u sistema hà da piglià cura di elli stessu. Hè per quessa iOS hè un sistema cusì frescu è veloce.

Da a perspettiva di u sviluppatore

L'applicazione pò reagisce cù un totale di sei stati diffirenti cum'è parte di multitasking:

1. applicationWillResignActive

In a traduzzione, stu statu significa chì l'applicazione dimissioni cum'è l'applicazione attiva (vale à dì, l'applicazione in u primu pianu) in u futuru (una materia di uni pochi millisecondi). Stu succèri, per esempiu, quandu riceve una chiamata mentri cù l 'applicazzioni, ma à u listessu tempu, stu mètudu pruvucarà dinù stu statu prima di l 'applicazzioni vai in u sfondate, cusì vi tocca à piglià sti cambiamenti in contu. Stu metudu hè ancu adattatu per chì, per esempiu, sospende tutte l'attività chì hè realizatu quandu ci hè una chjama entrata è aspetta finu à a fine di a chjama.

2. applicationDidEnterBackground

U statutu indica chì l'applicazione hè andata in fondo. I sviluppatori duveranu aduprà stu metudu per sospettà tutti i prucessi chì ùn anu micca necessariamente bisognu di eseguisce in u sfondate è sguassate a memoria di dati inutilizati è altri prucessi, cum'è timers di scadenza, sguassate l'imaghjini caricate da a memoria chì ùn serà micca necessariamente necessariu, o chjude. cunnessione cù i servitori, salvu chì ùn sia criticu per l'applicazione per compie e cunnessione in u fondu. Quandu u metudu hè chjamatu in l'appiecazione, deve esse utilizatu in fondu per sospende cumplettamente l'applicazione se una parte di questu ùn hè micca necessariu di eseguisce in fondo.

3. applicationWillEnterForeground

Stu statu hè u cuntrariu di u primu statu, induve l'applicazione dimissioni à u statu attivu. U statu significa solu chì l'app per dorme serà rianimata da u fondu è appare in u primu pianu in i prossimi millisecondi. i sviluppatori anu da aduprà stu metudu per ripiglià ogni prucessu chì era inattivu mentre l'applicazione era in fondo. A cunnessione à i servitori deve esse ristabilita, i timers resettanu, l'imaghjini è i dati caricati in memoria, è altri prucessi necessarii ponu ripiglià appena prima chì l'utilizatore vede l'applicazione caricata di novu.

4. applicationDidBecomeActive

U statu indica chì l'applicazione hè diventata attiva dopu à esse restituita à u primu pianu. Questu hè un metudu chì pò esse usatu per fà aghjustamenti supplementari à l'interfaccia d'utilizatore o per restaurà l'UI à u so statu originale, etc. Questu succede in u mumentu chì l'utilizatore vede digià l'applicazione nantu à a visualizazione, cusì hè necessariu determina cun prudenza ciò chì succede in u metudu di questu è in u metudu precedente. Sò chjamati unu dopu à l'altru cù una diferenza di uni pochi millisecondi.

5. applicazioneWillTerminate

Stu statu accade uni pochi di millisecondi prima chì l'applicazione esce, vale à dì, prima chì l'applicazione finisci veramente. Sia manualmente da multitasking o quandu si spegne u dispusitivu. U metudu deve esse usatu per salvà i dati processati, per finisce tutte l'attività è per sguassà e dati chì ùn anu più bisognu.

6. applicationDidReceiveMemoryWarning

Hè l'ultimu statu chì hè u più discutitu. Hè rispunsevuli di, se ne necessariu, caccià l'applicazione da a memoria di iOS s'ellu usa risorse di u sistema inutilmente. Ùn sò micca cunnoscu specificamente ciò chì iOS faci cù l'applicazioni di fondo, ma s'ellu hà bisognu di una app per liberà risorse à altri prucessi, l'invita cù un avvisu di memoria per liberà qualsiasi risorse chì hà. Allora stu metudu hè chjamatu in l'applicazione. I sviluppatori anu da implementà in modu chì l'applicazione rinunce à a memoria chì hà attribuita, salve tuttu in u prugressu, sguassate i dati innecessarii da a memoria, è altrimente libera a memoria in modu adattatu. Hè vera chì parechji sviluppatori, ancu principianti, ùn pensanu micca o capiscenu tali cose, è tandu pò accade chì a so applicazione minaccia a vita di a bateria è / o cunsuma inutilmente risorse di u sistema, ancu in u fondu.

Verdict

Sti sei stati è i so metudi assuciati sò u fondu di tutti i "multitasking" in iOS. hè un grande sistema, finu à chì i sviluppatori ùn ignoranu micca u fattu chì ci hè bisognu di esse rispunsevuli di ciò chì l'appiecazione tira nantu à i dispositi di i so utilizatori, si sò minimizzati o avè avvirtimenti da u sistema è cusì.

Surghjente: macworld.com

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

 
Avete ancu un prublema per risolve ? Avete bisognu di cunsiglii o forse truvà l'applicazione ghjusta? Ùn esitate à cuntattateci via u furmulariu in a sezione Cunsigliu, a prossima volta risponderemu à a vostra dumanda.

.