Conosciamo tutti la lezione "multitasking = capacità di eseguire più processi contemporaneamente". Lo usiamo nei nostri computer senza essere particolarmente consapevoli della sua presenza. Il passaggio da un'applicazione all'altra o da una finestra all'altra di un'applicazione avviene (per noi) in tempo reale e diamo per scontata questa capacità del sistema operativo.
Compito diverso
Il sistema operativo assegna il processore a tutte le applicazioni in piccoli intervalli di tempo. Questi periodi di tempo sono così piccoli che non possiamo notarli, quindi sembra che tutte le applicazioni utilizzino il processore contemporaneamente. Potremmo pensarlo multitasking su iOS 4 funziona esattamente allo stesso modo. Non è così. Il motivo principale è ovviamente la capacità della batteria. Se tutte le applicazioni restassero davvero in esecuzione in background, probabilmente dovremmo cercare un socket in poche ore.
La maggior parte delle applicazioni compatibili con iOS 4 vengono messe in "modalità sospesa" o messe in stato di stop dopo aver premuto il pulsante Home. Un'analogia potrebbe essere chiudere il coperchio di un laptop, che entra immediatamente in modalità di sospensione. Dopo aver aperto il coperchio, il portatile si riattiva e tutto è esattamente nello stesso stato in cui si trovava prima della chiusura del coperchio. Inoltre, ci sono applicazioni in cui la pressione del pulsante Home ne provoca la chiusura. E con questo intendiamo una vera e propria conclusione. Gli sviluppatori possono scegliere quale di questi metodi utilizzare.
Ma esiste un'altra categoria di applicazioni. Queste sono le app che vengono effettivamente eseguite in background, anche se stai facendo qualcosa di completamente diverso sul tuo iDevice. Skype è un buon esempio perché necessita di una connessione Internet costante. Altri esempi potrebbero essere applicazioni che riproducono musica di sottofondo (Pandora) o applicazioni che richiedono l'uso costante del GPS. Sì, queste app consumano la batteria anche quando sono in esecuzione in background.
Dormire o abbattere?
Alcune applicazioni compatibili con iOS 4, che dovrebbero essere messe in stato di stop (mettere in "modalità sospesa") dopo aver premuto il tasto Home, continuano a funzionare in background. Apple ha concesso agli sviluppatori esattamente dieci minuti affinché l'app completasse il suo compito, qualunque esso fosse. Diciamo che stai scaricando un file in GoodReader. All'improvviso qualcuno vuole chiamarti e tu devi solo accettare quella chiamata importante. La chiamata non è durata più di dieci minuti, tornerai all'applicazione GoodReader. Il file potrebbe essere già stato scaricato o è ancora in fase di download. Cosa succede se la chiamata dura più di dieci minuti? L'applicazione, nel nostro caso GoodReader, dovrà interrompere la sua attività e comunicare a iOS che può essere messa in stop. In caso contrario, verrà terminata senza pietà dallo stesso iOS.
Ora conosci la differenza tra multitasking "mobile" e "desktop". Mentre la fluidità e la velocità nel passaggio da un'applicazione all'altra sono importanti per un computer, la durata della batteria è sempre la cosa più importante per i dispositivi mobili. Anche il multitasking ha dovuto adattarsi a questo fatto. Pertanto, dopo aver letto questo articolo, se premi due volte il tasto Home, non vedrai più la "barra delle applicazioni in esecuzione in background", ma sostanzialmente solo la "lista delle applicazioni utilizzate di recente".
Autore: Daniel HruškaFonte: onemoretap.com
hmm, interessante :) Ho sempre pensato che fosse sempre simile a come si può fare su Unix. All'applicazione è stato assegnato zero tempo CPU e il processo si trova semplicemente in memoria, tutte le risorse sono state allocate. quindi ho dovuto premere due volte Home e interrompere immediatamente l'applicazione per eliminarla. Ciò significa quindi che anche se è presente l'icona dell'applicazione nel foglio nascosto in basso, l'app è ancora chiusa da molto tempo (dopo 10 minuti)?
Nell'elenco in basso si trovano semplicemente le applicazioni aperte più di recente, alcune delle quali possono ancora essere eseguite, altre sospese e altre ancora completamente chiuse. La rimozione manuale dell'applicazione dall'elenco ha l'"effetto collaterale" che se è in esecuzione (o viene sospesa) verrà terminata.
L'applicazione deve informarsi di quei 10 minuti extra e non è garantito che li ottenga.
Bene, questo non ha eliminato la mia ossessione di chiudere l'applicazione dall'elenco (e se mangiasse accidentalmente risorse, giusto? :-D)
Da quanto ho capito, i 10 minuti riguardano le app che devono funzionare in background e non rientrano nella categoria "skype, GPS e riproduzione musicale". Altre applicazioni passano alla modalità sospesa e rimangono in memoria finché la memoria non è necessaria per altre cose.
La modalità sospesa ha il vantaggio che se devi terminare l'app, non perderai i suoi dati, tutto verrà salvato al momento del passaggio alla modalità sospesa.
oppure, nel caso ad esempio della riproduzione, l'equivalente del comando bg / fg
E che dire del lettore o di altre applicazioni in esecuzione in background per un certo periodo di tempo? Voglio dire, posso "scegliere" come sviluppatore o questo deve essere approvato da Apple in qualche modo?
Affinché l'applicazione possa effettivamente funzionare in background per un tempo illimitato, deve eseguire (registrare) una delle seguenti azioni:
– Utilizzare i servizi di localizzazione (GPS)
– Riproduci musica in sottofondo
– Utilizzare VOIP (Voice over IP)
Dal titolo (uno sguardo sotto il cofano) mi aspettavo che l'articolo contenesse una spiegazione un po' più ampia con dettagli tecnici. Questo sembra più un perex per l'articolo. Se è Perex, quando sarà il seguito? Puoi ottenere un rimborso? :-)
e cosa vorresti sapere più nel dettaglio?
Da un articolo con "under the Hood" nel titolo, mi aspetterei una descrizione tecnica dettagliata (l'autore potrebbe analizzare, ad esempio, i costi generali quando si cambia applicazione o come viene risolto l'accesso simultaneo alle risorse di sistema), un confronto con altri modelli (ad esempio, con un iPhone jailbroken). È ideale supportarlo con alcune misurazioni. Semplicemente mi aspettavo molto di più da un articolo che ha "sotto il cofano" nel titolo rispetto a questa descrizione molto superficiale.
Esiste un client icq che funziona continuamente in background come Skype e non interrompe la connessione?
l'applicazione ha 10 secondi per entrare in modalità di sospensione, non 10 minuti... e durante questo processo, alcune parti potrebbero o meno "bloccarsi" sui servizi di backend, alcuni dei quali sono già stati elencati sopra - questo è ciò che Apple chiama "intelligente" " multitasking.... poi il sistema l'ha abbattuta
L'applicazione potrebbe richiedere più tempo se qualcosa viene scaricato, caricato o elaborato. Non ha nulla a che fare con il GPS, il VoIP o la riproduzione di musica, che funzionano in modalità minimalista per un tempo illimitato.