Todos coñecemos a lección "multitarefa = a capacidade de realizar varios procesos ao mesmo tempo". Usámolo nos nosos ordenadores sen ser especialmente conscientes da súa presenza. O cambio entre as aplicacións ou as fiestras dunha aplicación realízase (para nós) en tempo real e damos por sentada esta capacidade do sistema operativo.
Tarefa diferente
O sistema operativo asigna o procesador a todas as aplicacións en pequenos intervalos de tempo. Estes períodos de tempo son tan pequenos que non podemos notalos, polo que parece que todas as aplicacións están usando o procesador ao mesmo tempo. Poderíamos pensar que si multitarea en iOS 4 funciona exactamente igual. Non é así. O principal motivo é, por suposto, a capacidade da batería. Se realmente todas as aplicacións se deixasen executando en segundo plano, probablemente teriamos que buscar un socket nunhas horas.
A maioría das aplicacións compatibles con iOS 4 póñense en "modo suspendido" ou póñense en suspensión despois de premer o botón Inicio. Unha analoxía pode ser pechar a tapa dun portátil, que entra inmediatamente en modo de suspensión. Despois de abrir a tapa, o portátil esperta e todo está exactamente no mesmo estado que antes de pechar a tapa. Ademais, hai aplicacións nas que premer o botón Inicio fai que rematen. E con iso queremos dicir unha rescisión real. Os desenvolvedores poden escoller cal destes métodos usar.
Pero hai outra categoría de aplicacións. Estas son as aplicacións que realmente se executan en segundo plano, aínda que estás facendo algo completamente diferente no teu iDevice. Skype é un bo exemplo porque necesita unha conexión constante a Internet. Outros exemplos poden ser aplicacións que reproducen música de fondo (Pandora) ou aplicacións que requiren un uso constante do GPS. Si, estas aplicacións esgotan a batería mesmo cando se executan en segundo plano.
Durmir ou disparar?
Algunhas aplicacións compatibles con iOS 4, que deberían poñerse en suspensión (en "modo suspendido") despois de premer o botón Inicio, continúan executándose en segundo plano. Apple deu aos desenvolvedores exactamente dez minutos para que a aplicación completase a súa tarefa, fose o que fose. Digamos que estás descargando un ficheiro en GoodReader. De súpeto alguén quere chamarte e só tes que aceptar esa chamada importante. A chamada non durou máis de dez minutos, volverás á aplicación GoodReader. É posible que o ficheiro xa estea descargado ou aínda se está a descargar. E se a chamada leva máis de dez minutos? A aplicación, no noso caso GoodReader, terá que parar a súa actividade e dicirlle a iOS que se pode poñer en suspensión. Se non o fai, será despedida sen piedade polo propio iOS.
Agora xa sabes a diferenza entre a multitarefa "móbil" e "de escritorio". Aínda que a fluidez e a velocidade de cambio entre aplicacións son importantes para un ordenador, a duración da batería é sempre o máis importante para os dispositivos móbiles. A multitarefa tamén tivo que adaptarse a este feito. Polo tanto, despois de ler este artigo, se preme dúas veces o botón Inicio, xa non verá a "barra de aplicacións en execución en segundo plano", senón esencialmente só a "lista de aplicacións utilizadas recentemente".
Autor: Daniel HruškaFonte: onemoretap.com
hmm, interesante :) Sempre pensei que sempre era semellante a como se pode facer en Unix. Que a aplicación ten asignado cero tempo de CPU e o proceso só está na memoria, todos os recursos foron asignados. polo que tiven que premer dúas veces en casa e deter inmediatamente a aplicación para borrala. Entón, isto significa que aínda que haxa unha icona de aplicación na folla inferior oculta, a aplicación aínda está pechada hai moito tempo (despois de 10 minutos)?
Na lista inferior, hai simplemente as aplicacións abertas máis recentemente, polas cales algunhas delas aínda poden executarse, algunhas están suspendidas e outras finalizan por completo. Eliminar manualmente a aplicación da lista ten o "efecto secundario" de que se se está a executar (ou se suspende) finalizarase.
A aplicación ten que informarse sobre eses 10 minutos extra, e non se garante que os consiga.
Ben, iso non me libraba da miña obsesión por pechar a aplicación da lista (e se accidentalmente come recursos, non? :-D)
O meu entendemento é que os 10 minutos son para aplicacións que precisan funcionar en segundo plano e que non entran na categoría "Skype, GPS e reprodución de música". Outras aplicacións cambian ao modo suspendido e permanecen na memoria ata que a memoria sexa necesaria para outras cousas.
O modo suspendido ten a vantaxe de que se necesitas matar a aplicación, non perderás os seus datos, gardarase todo no momento de cambiar a suspendida.
ou, no caso de reprodución, por exemplo, o equivalente ao comando bg / fg
E que pasa co reprodutor ou outras aplicacións que se executan en segundo plano durante algún tempo? Quero dicir, podo "elixir" como programador, ou iso ten que ser aprobado por Apple dalgún xeito?
Para que a aplicación funcione realmente en segundo plano durante un tempo ilimitado, debe realizar (rexistrar) unha das seguintes accións:
- Usar servizos de localización (GPS)
- Reproducir música de fondo
- Use VOIP (Voz sobre IP)
Segundo o título (unha mirada debaixo do capó), esperaba que o artigo contivese unha explicación algo máis extensa con detalles técnicos. Isto parece máis un perex ao artigo. Se é Perex, cando é a secuela? Podes obter un reembolso? :-)
e que che gustaría saber con máis detalle?
Dun artigo con "debaixo do capó" no título, agardaría unha descrición técnica detallada (o autor podería analizar, por exemplo, a sobrecarga ao cambiar de aplicación ou como se manexa o acceso simultáneo aos recursos do sistema), unha comparación con outros modelos. (por exemplo, cun iPhone con jailbreak). É ideal para apoialo con algunhas medidas. Simplemente esperaba moito máis dun artigo que ten "baixo o capó" no seu título que esta descrición tan superficial.
Hai algún cliente icq que se execute continuamente en segundo plano como Skype e non interrompa a conexión?
a aplicación ten 10 segundos para entrar en modo de suspensión, non 10 minutos... e durante este proceso, algunhas partes poden ou non "colgarse" nos servizos de backend, algúns dos cales xa se enumeraron anteriormente; é o que Apple chama "intelixente". "multitarefa.... entón o sistema derrubauna
A aplicación pode requirir tempo adicional se se está a descargar, cargar ou procesar algo. Non ten nada que ver co GPS, a VoIP ou a reprodución de música, que funcionan en modo minimalista durante un tempo ilimitado.