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.
Ciao, articolo davvero interessante, ma mi chiedo se hai supporto tecnico per questo. Perché ho risolto più volte la batteria la sera prima di andare a letto ed è capitato che con wifi e dati mobili spenti ci mettesse di più che in un altro caso con wifi spento e solo 3G.
Sfortunatamente, l'esperienza è che in iOS le applicazioni devono essere disattivate manualmente e il sistema non funziona più come prima.
Ho sostituito il mio iPhone con un Windows Phone (Samsung Omnia W per 6200,-) e la velocità del sistema è su un livello completamente diverso.
Ho paura che quando usciranno i tablet Windows 8 Metro sostituirò anche l'iPad...
@007 – sì, se confronti i vecchi iPhone3G con i nuovi WP, allora sì (chi se lo sarebbe aspettato?) il WP sarà un po' più veloce. Altrimenti i pettegolezzi su Karlulka non ti vanno bene ed era opportuno confrontare l'attuale HW. Ho acquistato anche WP7 e alla fine mi sono ritrovato con 4s, che rappresenta un livello di usabilità completamente diverso rispetto a WP7. Quindi passa piacevolmente e scorri all'infinito tra le tessere.
Sono totalmente d'accordo con Paja
Contribuirei ancora con i detriti di un altro barile - Samsung Galaxy S e iPhone 4 - direi paragonabili in termini di età? Ai tempi di iOS 4, e in termini di usabilità e velocità in un ambiente diverso da Android, Apple ha risolto molto bene il concetto di lavorare con le applicazioni, ma con Android non è più così. Alla fine ho comunque scelto il 4S e non ho lamentele, perché "funziona e basta" .. e funziona molto velocemente!
La teoria è bella... Ma in pratica chiudo ancora l'applicazione nel bar ;)
Grazie, molto interessante, pragmatico, interessante, non manca swing e profondità. Sottolineando in modo significativo l'ossessione dei giovani di oggi per questo marchio proibito! Ma grazie per lei, così come per questo articolo.
L'articolo è completamente sbagliato.
L'applicazione non si chiude quando si preme il pulsante Home, come erroneamente affermato, ma va in pausa. Cioè. sicuramente non cancellare dalla memoria e non uscire. Metti semplicemente in pausa la corsa, iOS darà a questa app lo 0% di tempo CPU. Sicuramente non "scambia" da nessuna parte nella memoria dell'iDevice, come affermato nell'articolo. È proprio grazie al fatto che è possibile utilizzare il cambio di app.
L'applicazione viene rimossa dalla memoria quando il telefono ha poca memoria per eseguire altre applicazioni con una priorità più alta (in genere un'altra applicazione è in esecuzione in primo piano).
Nel primo caso hai ragione, si è trattato di un errore di traduzione. Per quanto riguarda lo swap, qui non stiamo parlando di questo, stiamo parlando della memoria operativa, non dello spazio di archiviazione nel dispositivo iOS.
l'immagine dell'applicazione viene conservata in memoria per un tempo limitato finché non viene richiamata nuovamente da un comando (vedi 13,7 GB su 16 GB: i 2,3 GB sono riservati al sistema e alle applicazioni sospese)
Pertanto, è necessario distinguere tra applicazioni come Navigazione, Skype e simili, queste applicazioni rimangono attive anche in background, oppure una determinata funzione non termina e continua, ad esempio, a inviare dati sulla propria posizione o informazioni sulla posizione. Oppure come Vokul in modalità pord ascolta e il multitasking continua ad ascoltare in background.
Queste applicazioni consumano la batteria ed è necessario chiuderle manualmente e non attendere iOS. con gli altri non è necessario, c'è solo nel caso in cui l'applicazione si blocca.
Non posso essere d'accordo con l'articolo. minimo su un iPad di prima generazione (iOS 1) è chiaro se ho molte app "aperte" nella barra multitasking o solo poche. iOS prova a pulire la memoria, ma ovviamente non è sufficiente: le dimensioni ridotte della RAM sono probabilmente il suo più grande punto debole.
quindi molto dipende dal sistema e dall'hardware utilizzato, è abbastanza logico che su un iPad 1 con iOS 5.0.1 sarà peggio che su un iPad di 2a generazione
Mi dispiace amico, questa è una descrizione del modo IDEALE in cui dovrebbe funzionare. Purtroppo la realtà è completamente diversa e lo sapresti se utilizzassi i prodotti Apple, almeno quanto me (cioè occasionalmente).
"Spesso si sentono superstizioni secondo cui le app eseguite in background in iOS riempiono la memoria operativa,"
Non è una superstizione, è solo un dato di fatto. Dopotutto, lo rivendichi tu stesso nell'articolo.
"Come ho detto prima, l'utente non ha mai bisogno di chiudere le applicazioni in esecuzione in background."
SENZA SENSO. Sono solo stronzate, propaganda delle mele, non arrabbiarti con me.
“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.
Non vero. La situazione è leggermente diversa. Un tipico esempio: ho applicazioni impegnative in esecuzione in background, ho bisogno di giochi. Lancio il browser, apro un paio di schede -> serve più memoria. Cosa accadrà? Continuo a richiedere applicazioni in background, anzi, IL BROWSER STESSO CADE. Se chiudo manualmente le applicazioni impegnative, il browser funziona a lungo senza problemi.
Questa è pratica, non teoria. E sono sorpreso che, come utente a lungo termine di un prodotto Apple, tu non lo sappia ancora.
Grazie, questo è molto ben descritto e ben spiegato. Mi hai aiutato non poco ;-) ♥
Tanto per premettere, non sono né a favore né contro iOS, proprio come con Android, ma qui ci sono alcune cose strane, se come è scritto qui: "raramente si verifica un crash dell'applicazione con iOS", quindi con Android, le applicazioni probabilmente si bloccano una volta all'anno: -P
http://dotekomanie.blog.mobilmania.cz/2012/02/stabilita-ios-vs-android/
Sì, ma i casi in cui è necessario chiudere l'applicazione manualmente sono davvero minimi, l'ho usato circa una volta? ;-) e dare un link al test comparativo di Mobilemania è del tutto inutile, quando vorrò leggere della pubblicità pagata da Google, darò un'occhiata lì ;-) tutti possono avere tra le mani qualsiasi telefono Android e lo non funzionerà in modo pulito, ad eccezione del Galaxy Nexus, il cui sistema è più o meno fatto su misura. Nel complesso, Android è un disastro
@Mek – Utilizzo quotidianamente i prodotti Apple da diversi anni e questo non mi è mai successo, quindi la tua teoria in qualche modo non funziona.
ERBA:
@redakce – Puoi vedere che il sito web è costantemente in lavorazione o che sta succedendo qualcosa, ma ho la sensazione che non ci vuole una settimana perché tutto funzioni come dovrebbe. E davvero non vengo più qui, perché il nuovo look non mi si addice. Almeno ho usato la versione mobile su iPhone, ma ora non funziona più: come mai? Al momento non rispondono ai post nei commenti.
@SteveJSF Sfortunatamente, le cose non sempre vanno come vorremmo. Per quanto riguarda le risposte, il nuovo plugin SEO le ha interrotte e il problema è attualmente in fase di risoluzione.
WP-Touch ha anche interrotto il nostro servizio per qualche motivo, quindi abbiamo deciso di trovare una soluzione migliore di questo plugin. Quindi potete attendere con ansia le prossime novità presto :-)
Bell'articolo. Per quanto riguarda la pratica premetto che sono d'accordo su diverse cose e la maggior parte delle volte funziona come detto, ma purtroppo ci sono ancora applicazioni scritte male che non si comportano correttamente, e poi ci sono casi come quello notato da alcuni lettori. Penso che Skype sia un ottimo esempio, so per esperienza che è ancora in esecuzione in background (e va bene ed è così che dovrebbe essere), ma il problema è che questa applicazione consuma molto la batteria del dispositivo e Non riesco più a vederlo correttamente. Al contrario, applicazioni come Facebook, Badoo, ecc. inoltre continuano a funzionare in background, ma il loro consumo è quasi impercettibile (almeno io non ne noto alcuno). Quindi penso che l'errore sia nelle singole applicazioni. Se sapeste quali basterebbe spegnere manualmente solo quelli!
Quindi la pratica è che Facebook funziona quando necessario e Skype solo quando necessario.
Beh, invece, se ho bisogno di risparmiare batteria e so di dover tenere "vivo" l'iPhone il più a lungo possibile, spengo anche tutto ciò che non è necessario nel multitasking, ma soprattutto non ha un grande impatto, ma se necessario limito il 3G, tutta la rete Internet mobile, il WiFi, i servizi di localizzazione, la modalità aereo, l'intensità dell'illuminazione, ecc. Come parte della routine, disattivo anche le suddette applicazioni in multitasking.
Quindi personalmente penso che l'articolo sia vero, purtroppo alcuni programmatori smentiscono queste cose con le loro applicazioni, perché le loro applicazioni non sono corrette e secondo me ci sono solo due soluzioni a questo 1. Se è possibile non utilizzare l'applicazione e trovare un alternativa se possibile, oppure 2. Se non è possibile, vedere ad esempio Skype, scriverlo al programmatore in questione nel rapporto e sperare che facciano qualcosa al riguardo.
Potrebbe essere inutile disabilitare manualmente le app, ma lo faccio comunque. Ho anche provato a non spegnere il sistema delle applicazioni, a lasciarle funzionare (o a lasciarle addormentate in background) e la durata della batteria era molto inferiore, inoltre è stato necessario riavviare l'iPad 2 dopo circa tre settimane, rispondeva lentamente. Quindi spengo le app manualmente, la batteria dura di più, ho riavviato di recente il giorno di Natale e funziona bene.
A proposito, faccio la stessa cosa in Mac OS X, chiudo semplicemente l'applicazione che non mi serve (CMD+Q), è meglio che farla dormire in background e consumare RAM inutilmente (cosa che OS X può fare) t lavorare molto bene). Ho poca RAM, solo 8 GB, ma in Windows 7 con 8 GB il sistema non rispondeva lentamente o si scambiava, in OS X questo è un fenomeno abbastanza comune (non ho mai spento il computer, lo faccio anche con Mac, quindi un mese e più di operatività non è un'eccezione, il problema è che a volte devo riavviare il Mac come precauzione per liberare RAM e "velocizzare", Windows 7 non ne ha bisogno).
Sono più interessato a come far esplodere effettivamente l'applicazione. Quello che mi è successo è che l'applicazione (in particolare su Geocaching) è entrata in uno stato in cui stava caricando qualcosa dal server principale ed è rimasta bloccata in quello stato. Il pulsante Home ha funzionato, dopo il riavvio è tornato allo stato congelato (da dove avevo interrotto). Uscita manuale (al menu multidegustazione, tenere premuta l'icona e meno per chiudere) = l'applicazione è scomparsa, dopo il riavvio si è aperta nel suo stato originale dove si era bloccata. Allora ho chiuso tutto, ho spento il telefono, l'ho riacceso, ho cliccato due volte su HOME ed ecco che le applicazioni erano tutte lì come prima di chiuderle poco prima di spegnerle. Anche il riavvio non ha aiutato: tieni premuto casa e superiore finché non fa caldo. L'unica cosa che ha aiutato è stata rimuovere l'applicazione dal telefono, riavviarla e reinstallarla sul telefono. In qualche modo non l'ho preso.
Questa gestione Multitasking funziona e spetta agli sviluppatori far fronte a queste situazioni. Per chi fosse interessato ad una descrizione più dettagliata e professionale di tutta la situazione, scriverò qui come sta.
L'applicazione può rispondere a un totale di 6 stati e questi stati sono:
applicationWillResignActive
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
applicazioneWillTerminate
applicationDidReceiveMemoryWarning
Ora proverò a descrivere questi stati in modo più dettagliato.
applicationWillResignActive – questo stato significa che in futuro (nel giro di pochi millisecondi) l'applicazione si dimetterà come applicazione attiva (cioè l'applicazione in primo piano) questo accade ad esempio quando si riceve una chiamata mentre si utilizza l'applicazione, ma allo stesso tempo questo metodo pertanto questo stato si attiverà anche 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.
applicationDidEnterBackground: questo stato indica che l'applicazione è entrata in background, gli sviluppatori dovrebbero utilizzare questo metodo per sospendere tutti i processi che non devono necessariamente essere eseguiti in background e pulire la memoria dai dati inutilizzati e da altri processi, ad esempio, scadere i timer, cancellare da immagini caricate in memoria che non saranno necessariamente necessarie o interrompere la connessione ai server se non è fondamentale per l'applicazione completare la connessione in background. Fondamentalmente, questo metodo quando viene richiamato nell'applicazione dovrebbe essere utilizzato per sospendere completamente l'applicazione se non è necessario che alcune parti di essa vengano eseguite in background.
applicationWillEnterForeground: questo stato è l'opposto del primo stato in cui l'applicazione passerà allo stato attivo. Questo stato dell'applicazione significa semplicemente che nei prossimi millisecondi l'applicazione addormentata riprenderà dallo sfondo e apparirà in primo piano (l'applicazione entra in primo piano), questo metodo dovrebbe essere utilizzato dagli sviluppatori per riprendere tutti i processi che erano 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 appena prima che l'utente veda nuovamente l'applicazione caricata.
applicationDidBecomeActive – questo stato indica che l'applicazione è appena diventata attiva dopo essere stata ripristinata in primo piano, questo è un metodo che può essere utilizzato per apportare ulteriori modifiche all'interfaccia utente o ripristinare l'interfaccia utente al suo stato originale, ecc. questo metodo avviene effettivamente quando l'utente può già vedere sul display, quindi è necessario determinare dal bilancio cosa sta succedendo in questo metodo e nel metodo precedente. Vengono chiamati uno dopo l'altro con una differenza di pochi millisecondi.
applicationWillTerminate: questo stato si verifica pochi millisecondi prima che l'applicazione termini, ovvero prima che l'applicazione termini effettivamente. O manualmente dal multitasking o quando si spegne il dispositivo. Questo metodo deve essere utilizzato per salvare i dati elaborati e per terminare tutte le attività e cancellare i dati che non saranno più necessari.
applicationDidReceiveMemoryWarning - e questa è una condizione di cui si parla molto qui, se necessario, iOS rimuoverà l'applicazione dalla memoria se utilizza inutilmente le risorse di sistema. Non so esattamente 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 le risorse che contiene. Quindi questo metodo viene chiamato nell'applicazione e gli sviluppatori dovrebbero implementarlo in modo che l'applicazione rinunci alla memoria di cui dispone, salvi i dati elaborati ed elimini i dati non necessari dalla memoria e altrimenti liberi adeguatamente la memoria. È vero che molti sviluppatori, ad esempio principianti, non pensano a queste cose o non le capiscono, e poi può succedere che la loro applicazione metta a rischio la durata della batteria e/o consumi inutilmente risorse di sistema anche in background. Non so come si comporterà iOS se l'applicazione non fa nulla dopo aver ricevuto un avviso di memoria e continua a consumare risorse di sistema come prima.
Questi pochi stati e metodi associati sono alla base del "multitasking" di iOS... è un ottimo sistema se gli sviluppatori non ignorano la necessità di essere responsabili di ciò che le app vomiteranno sui dispositivi dei loro utenti se vengono ridotte a icona oppure ricevi avvisi dal sistema e altro ancora...
Spero che questa breve descrizione ti aiuti a capire come l'applicazione è coinvolta nel far funzionare tutto senza intoppi. Quindi è quasi possibile dire che si tratta di un errore di utilizzo errato da parte dell'utente, che può essere inteso nel senso che: se utilizzi in gran numero applicazioni gratuite di sviluppatori amatoriali, il tuo dispositivo iOS funzionerà peggio che se utilizzi un grande numero di applicazioni gratuite e a pagamento di sviluppatori esperti o professionisti. Questo non vuol dire che non ci siano eccezioni in entrambi i circoli. Foursquare, ad esempio, si comporta in modo abbastanza strano ed esigente e, allo stesso tempo, ci si aspetterebbe che siano sviluppatori molto abili che dedicano molto tempo alla gestione della memoria e della batteria, ma è vero il contrario. Il problema più grande con 4SQ è la comunicazione con i server, che spesso si blocca e risulta sovraccarica. Questo è solo un esempio del fatto che anche le applicazioni più conosciute hanno problemi, il che non cambia il fatto che 4SQ sia un ottimo servizio.
Buon divertimento Mele!! :)
Abbiamo aggiunto le informazioni all'articolo con il gentile permesso dell'autore ;-)
Mi dispiace, INVIO era ovunque tra i paragrafi, potrebbero fare qualcosa qui in modo che i commenti abbiano almeno un po' di FORMAZIONE DI TESTO RICCA.
ArnieX: grazie per il commento!!
Quel Faramir: mi riferisco al tuo problema, non so se ti aiuterà nel tuo caso, ma so per esperienza personale che se chiudi l'applicazione (in multitasking) ci vogliono alcuni secondi prima che si chiuda, quindi se quando lo spegni ti consiglio di aspettare qualche secondo (io aspetto circa 10 secondi per essere sicuro) finché non sarà definitivamente terminato e solo allora lo ricomincio.
Prego ;) Sarò felice di aiutarti se avrò l'opportunità di contribuire.
Come dovrebbe essere con Meeb, quando accedo a ICQ o alla chat FB tramite esso, si disconnette automaticamente dopo 10 minuti e vado offline o continua a funzionare? grazie per la delucidazione:P
Dopo dieci minuti, la connessione dell'applicazione a Internet viene semplicemente interrotta. Resterai comunque online sul server Meeba e riceverai una notifica push se qualcuno ti scrive. Dopo aver riaperto l'applicazione, la connessione verrà stabilita in un attimo e potrai continuare a chattare felicemente.
Quindi, se ho capito bene l'articolo che hai linkato, le statistiche si riferiscono solo ai crash delle applicazioni all'avvio, che è una percentuale abbastanza piccola di casi in cui può verificarsi un crash. Pertanto da questa "ricerca" è impossibile concludere che iOS sia meno stabile secondo me. Inoltre, il traduttore dell'articolo tratto da Forbes ha dimenticato di menzionare che la società che fornisce dati sui crash delle applicazioni è supportata, tra gli altri, da Google ("Crittercism, which is backed by Google Ventures,...").