Multitarea en iPhone OS 4

Multitarea en iPhone OS 4

12 abril, 2010 |  by  |  iPad, iPhone, iPod

Después de estar probando unos días todas las novedades de la versión 4 del iPhone OS (el nombre del sistema operativo del iPhone, iPad y iPod Touch), os hablamos un poquito más de la novedad importante, la multitarea.

La multitarea (multitask en inglés) es el hecho de poder tener abiertas varias aplicaciones a la vez en un dispositivo u ordenador. Hoy día todos los sistemas operativos de ordenadores son multitarea.

El iPhone en realidad es multitarea desde su versión 1.0, es capaz de escuchar canciones mientras navegas una web o mandar un email en mitad de una conversación, pero cuando una aplicación de la AppStore se cierra, lo hace del todo.

multitasking

Esto no es un problema para muchas aplicaciones pero otras como juegos (donde pierdes la partida), aplicaciones de productividad (donde pierdes el trabajo realizado), aplicaciones de música (donde deja de sonar), Skype y similares (si la App no está abierta, no puedes recibir llamada) o algunas como el Tomtom (simplemente deja de darte instrucciones si te llaman o compruebas el mail) necesitan alguna manera de arreglar estas limitaciones.

El problema de tener varias aplicaciones abiertas a la vez es que el consumo se multiplica (se gasta mucha más batería) y el sistema va mucho más lento. Apple no quiere que la experiencia de usuario sea vea afectada y por ello ha desarrollado un sistema que preserva la batería, no consuma recursos pero que sea transparente para el usuario.

Por ello han decidido implementar Multitasking de siete maneras (o servicios):

iphone-os-4-0204-rm-eng

Audio de fondo

Cuando sales de una aplicación como Pandora o Spotify (supongo que todas las operadores de radio se sumarán), el audio seguirá sonando e incluso tendrás acceso a los controles (como actualmente los del iPod), tanto flotantes  como los que salen al hacer doble clic con el iPhone bloqueado.

Un símbolo de PLAY nos indicará que hay algo sonando, como con el iPod actualmente.

VoIP

Servicios como Skype o iCall seguirán funcionando una vez que hayamos salido de la aplicación con lo que podremos seguir recibiendo llamadas aunque estemos revisando nuesras notas o jugando al Call Of Duty.

La barra de menú se volverá roja para indicarnos que hay un servicio de VoIP ejecutándose  en segundo plano.

Background Location

Cuando salgamos del Tomtom o de redes sociales con localización como Loopt, el GPS (o la localización por triangulación para ahorrar batería) seguirá funcionando e incluso seguiremos oyendo a la señorita diciéndonos que se acerca una curva peligrosa.

Un nuevo símbolo como de una flecha nos aparecerá para indicarnos que estamos siendo “localizados”.

Notificaciones PUSH y locales

Las notificaciones locales serán eventos como alarmas o similares que podrán avisarnos sin necesidad de un servidor, las PUSH son las que tenemos desde la 3.0, muy útiles en aplicaciones como mensajería instantánea.

Completar tarea

Imagínate que quieres mandar un vídeo de 20Mb a youtube y no tienes Wifi… A partir de ahora puedes salir de una aplicación que ésta se encargará de terminar lo que estabas haciendo para que puedes realizar otras cosas más útiles.

Cambio rápido de aplicaciones

La última, más sencilla y más importante según mi punto de vista.

Cuando sales de una aplicación “ésta no se cierra” (veremos esto con detalle en la reflexión), si pulsas 2 veces en el botón Home, un nuevo Dock aparecerá con todas las aplicaciones “abiertas” y podremos cambiar rápidamente entre ellas sin ir al menú.

En realidad lo bueno es que la aplicación se queda tal cual estaba exactamente en el momento de salir, si estabas a punto de matar al malo final y te matan, no te enfades, porque cuando vuelvas estarás en ese mismísimo y exacto momento.

IMG_0911

Reflexión y conclusión final

Las aplicaciones que cumplen VoIP, localización, música o completar la tarea que estaban haciendo SÍ que se quedan abiertas (sólo esos procesos y servicios) hasta que los quitas o terminen.

Las PUSH notification ya sabemos como va, la aplicación está cerrada y es el servidor el que mantiene la conexión.

Las Notificaciones locales hacen algo parecido pero apenas consumen recursos (como una alarma de iCal vamos, de hecho probablemente sea el mismo proceso el que lleve todas las notificaciones locales).

Contrariamente a lo que dijo Steve Jobs, cuando sales de una aplicación de la 4.0 la aplicación NO SIGUE FUNCIONANDO, no consume recursos (eso lo dijo bien). Simplemente, el iPhone guarda el estado de la aplicación (su RAM) en el disco y sale de la aplicación liberando esa RAM, cuando vuelves a abrir la aplicación, se carga a la RAM el estado guardado de la aplicación. Y probablemente se libere ese estado guardado.

Todos esto pasa instantáneamente, pero cuando la aplicación es un juego en 3D o estaba consumiendo mucha RAM puede tardar un segundo o 2 (la RAM del iPhone 3Gs son 256MB y no sé cual es el máximo que consumirá un programa pero ponte 128MB, eso tardaría unos 2 segundos si se pasara a 60MB/s, que es una velocidad aceptable para una memoria Flash en la placa base.)

El Dock de la multitarea no representa realmente las aplicaciones en funcionamiento, sino las aplicaciones que tienen un estado guardado en el iPhone, hace la función de “Aplicaciones recientes” por así decirlo. He llegado a contar 26 aplicaciones en esa lista, incluyendo juegos como Avatar, aplicaciones pesadas como el TomTom y no notaba ninguna pérdida de velocidad (ni de batería ya que estamos).

Cuando eliminamos una aplicación de ese dock (la “cerramos del todo” manteniendo pulsado el icono en la nueva barra y pulsando un “menos”) lo que estamos haciendo es borrar el estado guardado de esa aplicación, lo que hará que vaya al menú principal cuando la abramos de nuevo.

En definitiva, una aplicación guarda su estado tal cual liberando al iPhone de ciclos de procesador y liberando la memoria RAM para otras aplicaciones. SÓLO las aplicaciones que hagan uso de VoIP, Audio, Task Completion o Background Location consumirán CPU y RAM (y sólo en esos servicios).

Apple ha reinventado la forma de hacer multitarea sin que la batería, el procesador o la rapidez que percibe el usuario final se vean alterados.

Un 10 para los ingenieros. Un iPhone 4 para mí.

 

16 Comments


  1. Pues esto que leí me tiene un poco mosqueado, habla de cambiar noseque en nosedonde y los iphone 3G tendrán multitarea. Me pregunto si sabes algo ya que has podido probar el nuevo SO.

    http://appleweblog.com/2010/04/la-multitarea-podra-ser-activada-en-los-iphone-3g

    Espero que no lo consideres SPAM :)

    Un saludo

  2. Simplemente es que cambiando un archivo de preferencias (necesitas haber hecho el JailBreak), puedes decirle que SÍ que haga multitarea a un 3G.

    El problema es que Apple lo deshabitó porque 128MB de RAM (y quitando el sistema y eso se quedan en 40/50 libres para el usuario) no son suficientes para que todo esto funcione con soltura. Y Apple no quiere que nada de su sistema entorpezca la experiencia de usuario.

    Es decir, mi madre no sabe ni lo que es la multitarea y dudo mucho que lo utilice como yo, ella tiene un 3G y seguro que le molestaría verlo lento y a tirones por una cosa que ni va a utilizar.

  3. Como siempre, fantástico análisis el que hacéis. Interesante forma de implementar la multitarea.

    Sobre lo del iPhone 3G, estoy convencido de que los de Apple estarían contentísimos si hubiesen logrado que funcionase también en el 3G, y si no lo han hecho, no ha sido por fastidiar, sino porque realmente no es viable tecnicamente. ¿Porqué creo esto? A priori podemos pensar que lo han hecho para obligar a la gente a jubilar su viejo 3G para comprarse el nuevo que saquen este año. En muchos foros se dice esto, pero creo que no es Apple precisamente la que hace estas cosas, todo lo contrario, si quisieran, se podrían haber limitado a dejar el OS4 solo para 3GS en adelante, y que los anteriores modelos se quedasen con el OS 3, pero no, se han currado la versión 4 en lo que han podido para sus modelos antiguos. Y creo que la razón está en que, quien quiera jubilar su viejo iPhone y pasarse al nuevo, tiene razones como mejor procesador, más memoria, brújula, etc., para dar el salto. No necesitan “putear” con el software. Por otro lado, los antiguos compradores no se sienten olvidados ya que siguen recibiendo mejoras y nuevas versiones, lo cual el día que quieran cambiar, les hará decidirse por el iPhone, a tener la tranquilidad de que su teléfono no se quedará anticuado, obsoleto u olvidado en unos meses (normalmente, en cuanto una compañía vuelve a sacar modelos nuevos, se olvida de los viejos). Y no solo ellos se lo comprarán, sino que también lo recomendarán a otros usuarios nuevos. Y estos posibles clientes, también se deciden por el iPhone al tener la tranquilidad de que es una inversión a largo plazo (para lo que es la informática).

    Yo personalmente, cuando las pasadas navidades me decidí a comprar uno, barajé Android o iPhone. Estuve analizando características de uno y de otro, aplicaciones, funcionalidades, compatibilidades con mi Macbook, precio, etc. En cuanto a características técnicas teoricamente ganaban otros con mayor pantalla, procesador, etc. Pero en cuanto a almacenamiento interno, precisión de pantalla, compatibilidad con Mac, duración de batería, y sobretodo, actualizaciones, ganaba el iPhone por goleada, y fue lo que me decidió a elegirlo. En los otros, las actualizaciones dependían, no de Google, sino del fabricante por un lado, y de la operadora por el otro. Creo que aquí Google tiene un handicap que debe solucionar: debes actualizar los teléfonos sí o sí.

  4. Muy buena explicación. Sólo una corrección, por mucho que Apple lo venda como la invención del fuego, lo que ha hecho no ha sido reinventar la multitarea, ha implementado un sistema que es muy, muy similar al que existe en Android.

    • Interesante, no lo sabía. La verdad es que Google tampoco se queda atrás. La que está dormidísima es Microsoft, pero tampoco tengo ganas de que despierte, jajaja. Quien sabe si el próximo teléfono será de Google. Sobretodo, si Apple empieza a quitar o continúa vetándoles aplicaciones… Ahí puede que Apple se de de bruces, porque Gmail, Picasa, Google Calendar, Google Docs, Google Earth, etc. son unos servicios web insuperables, y competir con ellos por las duras (es decir, capándoles), puede ser un craso error…

  5. No estoy de acuerdo en lo de Android, en el sistema operativo de Google hay multitarea pero no de servicios o procesos sino de toda la aplicación, otra cosa es que la aplicación se queda “a la espera” de interacción con el usuario pero no guarda su estado y su RAM en disco para luego restaurarla.

    Apple no ha inventado la rueda, solo la ha implementado de la mejor manera posible para mantener su “experiencia de usuario”, que es lo que hace el iPhone distinto a los demás.

  6. Rectifico en lo de guardar el estado pero sigo sin estar de acuerdo contigo, cito una frase de la página que me has puesto:

    “One difference between Android and iPad & iPhone is that Android does not kill applications on task switch. The iPad & iPhone will continue to do so. Thus, in some sense, Android has a third solution to application multitasking: We allow apps to actually multitask until the system experiences memory pressure, at which point our OOM killer is able to kill applications in least-recently-used order.”

    Resumiendo, en Android la aplicación SE QUEDA ABIERTA CONSUMIENDO RECURSOS (PROCESADOR Y RAM) Y GASTANDO BATERÍA.
    Además se guarda el estado de esa aplicación. Cuando se alcanza el límite de memoria RAM, Android comienza a cargarse las aplicaciones abiertas por orden inverso (por lo menos) y si se carga una aplicación que necesitabas la recupera de su estado guardado. Si la aplicación que se carga estaba siendo utilizada para audio u otro servicio, el servicio seguirá funcionando gracias a Services, una API de Android que hace lo mismo que el iPhone OS 4.

    Tienes razón en lo de que es muy similar pero hay una diferencia fundamental que es el consumo. Cuando sales de una aplicación del iPhone, guarda el estado y sale de la aplicación (menos de aquellos servicios) LIBERANDO LA RAM Y LIBERANDO AL PROCESADOR, REDUCIENDO EL CONSUMO DE BATERÍA.

    Son dos maneras de hacer lo mismo, una eficiente y elegante, transparente para el usuario, y otra que consume recursos y batería.
    Si quieres puedes decir que no es multitask de verdad, en eso estoy de acuerdo.

    • Nop, cuando un programa pierde el foco se pausa guardando su estado y no consumiendo ciclos de CPU.

      La única diferencia es que no la quita de memoria si no hace falta esa memoria

      http://developer.android.com/guide/topics/fundamentals.html#proclife

      • Pues tu amigo de la pagina de antes no dice lo mismo pero vamos que te creo a ti (por no leerme eso, jaja)

        El tema es que no libera la RAM y sabrás que eso se traduce en batería

        • Considerando que creo que el gasto de batería tanto de mantener algo en la RAM como escribir y leer de la flash es insignificante comparado con el gasto normal (pantalla, programas, etc) me extrañaría mucho que hubiera mucha diferencia entre mantener 10 MB (por poner una cifra) en RAM que grabar en flash 1 KB (datos del programa), liberar RAM y leer 10MB + 1 KB de la flash.

          Pero vamos, que las diferencias deben ser insignificantes entre uno y otro método.

  7. Lo que está claro es que Android y iPhone OS son los que incorporan los mayores avances tecnológicos, a algunos les gusta más Android por ser abierto y modificable y a otros iPhone OS por ser muy fácil de usar aunque más cerrado.

    De todos modos, no hay color con Windows Mobile… A mí me dan un poco de pena los Symbian que en su día eran buenísimos pero no han sabido innovar y mantenerse modernos, hay terminales muy buenos que al tener Symbian pierden su atractivo.

  8. Quiero comentar que he leído con atención tu artículo porque es un
    tema que buscaba en internet pero hasta el momento no había podido
    hallar aquello que quería.

    Gracias

  9. Quisiera comentar en este lugar en señal de apoyo

  10. He estado navegando por la red durante más de dos horas en el día de hoy, y no he encontrado un artículo tan interesante como el tuyo.
    Tal y como yo lo veo, si todos los dueños de sitios web escribiesen tan buen
    contenido, la web sería mucho más útil. Felicidades por esta entrada.
    Me ha resultado muy útil, saludos y suerte.

Trackbacks

  1. Un paseo por iPhone OS 4.0 | AppleNeXt

Leave a Reply