(atención: post largo pero interesante
)
Llegamos tarde, pero llegamos siendo el mejor.
Palabras (más o menos) de Steve Jobs. La multitarea en los iPhone ha dado mucho que hablar desde su lanzamiento y ahora que la tendremos quiero comentar un poco como irán las cosas, bajos mi punto de vista y mis conocimientos.
Empecemos por decir que el iPhone OS 3 ya es multitastking. No para las App de terceros pero el sistema si que lleva implementado muchos de los sistemas necesarios para hacer multitasking. Mail, Safari, Push… todo corre en segundo plano tranquilamente, incluso el iPod.
![sdk_hero[1] sdk_hero[1]](http://elmundoexterior.es/wp-content/uploads/2010/04/sdk_hero1_thumb.png)
Como es ese multitasking? Pues un poco diferente al de nuestros PC. Simplificando cuando estamos en Safari y salimos para ir a otra App lo que hace el SO es “congelar” Safari y dejarlo en memoria pero sin darle tiempo de CPU. Con eso conseguimos que para el rendimiento es como si estuviera apagada, pero al volver a abrirlo el SO ya tiene en memoria todo lo que habíamos hecho antes.
Como vemos la clave esta en dejar congelado un programa y tenerlo aún volcado en memoria aunque no se ejecute. Eso trae también algunos problemillas debido a que son plataformas móviles. La memória RAM del dispositivo es muy preciada. Solo con Safari lo podemos comprobar. Con un iPhone 3G (o el anterior ya que llevan el mismo hard) que tiene 128 MB de RAM, al tener el SO en marcha y algún caché de Mail al abrir pestañás en Safari vemos el efecto. Safari guarda esas webs en la ram y si abrimos unas cuatro, podemos ver que si volvemos a la primera debe ser recargada ya que el SO habrá vaciado esa parte de memoria que necesitaba para abrir la cuarta.
![IMG_0322[1] IMG_0322[1]](http://elmundoexterior.es/wp-content/uploads/2010/04/IMG_03221_thumb.png)
Entonces la clave esta en la memória, y no tanto en el procesador, ya que la App ahora mismo se quedan congeladas en segundo plano sin consumir CPU. El iPhone 3GS al tener 256 MB de Ram puede abrir pestañas de Safari mucho mejor y tener App en segundo plano con más tranquilidad. (aunque a la larga 512MB se hacen necesarios). Esta es la razón por la que el multitasking del iPhone OS 4 no estara disponible en antiguos terminales.
Sobre la nueva multitarea que todos pedían, o sea multitarea “real” para Apps de terceros Apple lo ha hecho tarde, pero lo ha hecho muy bien y a su manera. Nos han dado multitarea, pero no como la tenemos en nuestros PC, sino una multitarea genial para un dispositivo móvil que evita consumo de CPU y de batería.
Apple sabe que la gente necesita Apps en segundo plano, pero no quiere sacrificar CPU ni batería. Por eso a seguido la misma filosofía que hasta ahora. Dejas las Apps congeladas en segundo plano en memoria para que no consuman batería ni CPU… pero y las que necesitan ejecutar algo en segundo plano?
Apple ha creado 7 “servicios” que se ejecutarán en segundo plano, pero por el propio SO. Entonces ahora tendremos Apps en segundo plano, congeladas, estando en memoria, y usando alguno de estos servicios para hacer ejecuciones en segundo plano. Por lo que el consumo de CPU será el mínimo, y tendremos multitarea
![80x80_icon1[1] 80x80_icon1[1]](http://elmundoexterior.es/wp-content/uploads/2010/04/80x80_icon11_thumb.png)
Como ya debéis saber esos siete servicios que las App podrán usar para hacer tareas en en segundo plano son:
- Background audio – Permite reproducir audio en segundo plano. De la misma forma que ahora tenemos con la App del iPod nativa. Ideal para Spotify, Pandora…
- Voice over IP – Servicio de llamadas por IP en segundo plano. De la misma forma que ahora tenemos la propia App de llamadas del iPhone. Con la misma interfaz y los mismos controles. Skype por fin se volverá útil!
- Background location – El iPhone podrá usar la localización e indicarnos dónde estamos estando la App en segundo plano. Esto permite usar la localización con más duración de la batería. Tom Tom vuelve a la carga
- Push notifications – Lo mismo que ya tenemos ahora. Recibimos notificaciones Push desde un servidor conectado permanentemente.
- Local notifications – Lo mismo que el Push notifications pero sin servidor remoto, todo gestionado localmente. Para cuando una App nos quiera decir algo estando en segundo plano.
- Task finishing – Para tareas que requieran tiempo para ser acabadas, estas se podran dejar en segundo plano. Por ejemplo subir fotos a Flickr, se podrá dejar la App en segundo plano mientras las sube
.
- Fast app switching – El “cambiador” de aplicaciones que llevara el iPhone. Doble click en el “botón”.
![iphone-multitask-dock[1] iphone-multitask-dock[1]](http://elmundoexterior.es/wp-content/uploads/2010/04/iphonemultitaskdock1_thumb.jpg)
Como veis estas son las cosas que podrán hacer las App en segundo plano. Es una multitarea, pero quizás algo limitada, pero yo creo que és ideal para un smartphone. Un juego en segundo plano no va a estar consumiendo CPU inútilmente, se dejara congelado puesto que no tiene sentido que use el procesador para nada. En cambio podremos escuchar música de Spotify con la App en segundo plano, i igualmente, solo consumira CPU el proceso de reproducir, no toda la App.
Para mi es una multitarea perfectamente pensada!! Incluso creo que se podría llegar a trasladar a oros SO… pero bueno, aquí ya no tengo tanto conocimiento para hablar y sería otro tema
Todo lo comentado en el post es sobre lo que yo tengo conocimiento xD Me puedo haber equivocado mucho.
Y a vosotros que os parece esta implementación de la multitarea?