Errores de concepto sobre la multitarea en iOS

14/10/2012 por Carlos Burges

Hay un "truco" que se recomienda activamente entre los usuarios de los dispositivos de Apple que está, simplemente, equivocado. Se oye amenudo, incluso hasta por los propios Genius de Apple. El "truco", expresado como consejo, indica que "todas esas aplicaciones en el menús e aplicaciones abiertas están actualmente activas y están reduciendo el rendimiento de tu dispositivo, consumiendo batería y memoria. Para maximizar el rendimiento y la autonomía de la batería las debes matar manualmente". Pues esto, aunque se repite hasta la saciedad, realmente no afecta a nada ni al rendimiento ni a la batería. Y vamos a ver porqué.

La barra de "multitarea" se activa haciendo doble clic en el botón home de tu dispositivo iOS para mostrar una serie de aplicaciones … que no se están ejecutando. Simplemente son una lista de aplicaciones recientemente utilizadas ya que el usuario no tiene acceso a manejar las tareas en segundo plano en un iPhone, iPod Touch o iPad. De eso se encarga el sistema.

Excepto en una serie de casos que vamos a explicar, las aplicaciones que aparecen en esta barra de tareas no se están ejecutando. En la mayoría de los casos, cuando estás ejecutando una aplicación y pulsas el botón Home para pasar al escritorio iOS le dice a la aplicación que "salga" y automáticamente deja de consumir batería, recursos de la CPU y memoria que pueda estar usando se recupera si es requerido.

Pero vamos a la parte técnica del asunto: las aplicaciones iOS tienen 5 estados posibles que son:

  • No se están ejecutando: la aplicación no se ha arrancado o ha sido cerrada
  • Inactiva: la aplicación está en primer plano pero no recibe eventos (por ejemplo, el usuario ha bloqueado el dispositivo con la aplicación abierta)
  • Activa: el estado normal de una aplicación en ejecución
  • Segundo plano: la aplicación no está en primer plano pero sigue ejecutando código.
  • Suspendida: la aplicación sigue residente en memoria pero no está ejecutando código.

 

Los estados activo e inactivo no son interesantes por motivos obvios: la mayoría de la confusión causada corresponde a los otros 3 estados.

Cuando pulsas el botón "Home" de tu dispositivo, Apple mueva la aplicación desde el estado Activo al de Segundo plano. La mayoría de las aplicaciones van de este estado de Segundo Plano al estado de Suspendida en cuestión de segundos.

Las aplicaciones suspendidas se mantienen en la memoria del dispositivo. Esto permite volver a acceder a ellas con rapidez pero en la realidad no están usando ni el procesador ni están consumiendo batería porque no ejecutan código.

Llegados a este punto puedes pensar que es conveniente retirar esa aplicación en estado suspendido porque así liberas memoria. Pero realmente esa tarea la realiza iOS por ti. Así que si tienes varias aplicaciones suspendidas y arrancas una aplicación que ocupa mucha memoria, por ejemplo, un juego, iOS automáticamente liberará memoria ente ellas aplicaciones suspendidas para pasar esas aplicaciones de Suspendidas a Inactivas. Este comportamiento es muchísimo más evidente cuando tienes un dispositivo con menos memoria (por ejemplo, un iPod, iPad o iPhone con 16 GB) pero es la explicación de la razón de que a veces accedes a aplicaciones desde la barra "multitarea" y en ocasiones accedes rápidamente al último estado en el que dejaste la aplicación y en otras ocasiones simplemente la aplicación arranca de nuevo.

Y esto es lo que precisamente confunde a mucha gente: la barra "multitarea" realmente no lo es, sino una lista de aplicaciones recientemente lanzadas con diferentes estados: puede que alguna de ellas esté inactiva, y otras simplemente estén Inactivas. Es precisamente por esta razón por la que la aplicación que estás ejecutando en primer plano no aparezca en esta lista. Porque no es una lista de las aplicaciones que se están ejecutando "realmente".

En segundo plano

Cuando una aplicación se envía a segundo plano, pasa a estado suspendido en unos pocos segundos. Una aplicación puede solicitar al sistema una "extensión" de tiempo declarando que ha iniciado una "tarea en segundo plano". Hay muchas aplicaciones que utilizan esta táctica para solicitar a iOS una extensión del periodo de ejecución porque están realizando una tarea en segundo plano, como por ejemplo, una descarga de software, pero esa extensión de tiempo no es infinita y tras unos minutos pasan a estado suspendido ya que iOS las fuerza a ello para conservar energía y mantener la autonomía controlada.

Pero no todas las aplicaciones funcionan de la misma manera. Todas ellas disponen de un plazo de 5 segundos en segundo plano (para guardar, por ejemplo, ajustes o cambios en el documento, etc ..) y algunas pueden solicitar una extensión de este plazo hasta los 10 minutos. Hay, sin embargo, una minoría de aplicaciones que necesitan ejecutarse en segundo plano de forma continua e iOS se lo permite.

Hay 5 tipos de aplicaciones que se ejecutan de forma indefinida en segundo plano:

  1. Aplicaciones que reproducen audio. Itunes, aplicaciones que reproducen Podcast, etc …
  2. Aplicaciones que gestionan tu localización en segundo plano. Por ejemplo, la aplicación de Tom Tom te sigue enviando mensajes sobre tu ubicación aunque tengas otras aplicación en primer plano.
  3. Aplicaciones de Voz sobre IP que están "escuchando" a ver si reciben una llamad.
  4. Aplicaciones que descargan contenidos en segundo plano. Los kioscos digitales o aplicaciones que hacen llamadas a servidores externos para descargar contenidos nuevos.
  5. Aplicaciones que reciben información y notificaciones de un accesorio de hardware conectado al teléfono.

Todas las aplicaciones "bien escritas" pasan a estado Suspendido si no están realizando ya ninguna tarea. Hay alguna aplicación, que por ejemplo, si están abiertas de forma continua  en segundo plano: la más habitual es Mail, pero también puede haber otras como Mensajes.

Entonces?

Bueno, este es el problema. El "Entonces". Por defecto no nos debería preocupar la gestión multitarea del dispositivo, sino las aplicaciones que utilizamos (y están bien escritas). En general, la mayoría de ellas si que lo están, y en todo caso, lo que debemos tener en cuenta es que tipo de aplicaciones ejecutamos y cuales, por el motivo que sea (la mayoría de las veces, por un código ineficiente) se están enviando a segundo plano sin pasar a estado suspendido porque continuamente solicitan "notificaciones" del exterior. Si tienes problemas de rendimiento en tu dispositivo iOS, con toda seguridad no es un asunto de la multitarea, sino de una aplicación en concreto que se empeña en mantenerse en segundo plano, activa, llamado "a casa" para obtener información. Identifícala y elimínala de tu dispositivo y deja a iOS que se encargue de la multitarea.

Fuente: Fraser Speirs con comentarios de Carlos Burges

2
Comentarios
  • #1 por Yohat el 14/10/2012
    Bones.

    Desde mi experiencia personal, sí que conviene eliminar cuando puedas todas las aplicaciones que se quedan en la barra de aplicaciones.
    No entraré en si están bien escritas o no, que si sobre el papel no debería pasar... pero lo que sí es cierto es que si tienes muchas, el contador de memoria baja que lo flipas.
    En mi iPhone 3GS, cuando la memoria libre llega a los 10-20 MB, el móvil se vuelve lentísimo. Y una vez cerradas todas las apps, el contador de memoria vuelve a sus 40-80 MB habituales y el dispositivo vuelve a rendir lo que se le espera.
    Y en mi iPad 2 ocurre lo mismo, pero no tan frecuentemente por tener más memoria que el 3GS, pero cuando llega a esos 10-20 MB críticos, todo se ralentiza.
    Y en dispositivos de amistades (iPhone 4), llegó un momento que les ocurría lo mismo, tenían tantas apps abiertas que todo les iba lento.

    Mi conclusión es que de iPhone 4/iPad2 en adelante, no te debe preocupar mucho cerrar apps, a no ser que tengas más de una decena larga de ellas abiertas.
    Pero si tenéis un 3GS o inferior... a la que podáis cerrarlas todas. Veréis como el móvil vuelve a ser "veloz".

    Me olvidaba. Y todo ésto me ocurre incluso teniendo abiertas solamente las aplicaciones de Apple como Mail, Safari, Música, Appstore... No es tan bonita la multitarea de iOS tal como la pintan.
  • #2 por Jabba el 14/10/2012
    Mi experiencia con las apps en iPhone e iPad no es tanto el número de ellas abiertas sino el hecho de que alguna intente conectarse, acceder a la localización o a otros servicios. Es entonces cuando se produce un paron en el funcionamiento.
  • #3 por juan.varios el 14/10/2012
    Absolutamente de acuerdo con Yohat, por lo menos en mi iPad1 y 3GS.
  • #4 por xaxv el 14/10/2012
    Servidor tambien afirma que cerrar las aplicaciones en segundo plano mejora el rendimiento, por lo menos es el primer iPad sin duda es asi. Se puede comprobar tanto con programas de analisis del sistema como simplemente notando la evidente mejoria de velocidad.

    En sistemas con mas memoria evidentemente esto no es tan evidente, pero aun asi el cierre de aplicaciones libera memoria. Por tanto aunque no es necesario estar continuamente cerrando cada aplicacion en un, pongamos por ejemplo, iPhone 4s tampoco es cuestion ir abriendo y no cerrar nunca las aplicaciones dejando decenas de aplicaciones en segundo plano.

    Por tanto el "truco" ni es tan verdadero ni tan falso. Personalmente y aun conociendo como funciona el sistema multitarea de iOS cierro y recomiendo cerrar aquellas aplicaciones que no usemos. No es algo vital y de lo que estar pendiente a cada rato, pero si algo a tener en cuenta y controlar de cuando en cuando.
  • #5 por sergio_af el 14/10/2012
    Yo al redactor propongo

    Que abra Facebook App, Messenger Microsoft y no las cierre y compruebe como el porcentaje de batería vuela!!!!
  • #6 por Carlos Burges el 14/10/2012
    #5 estás precisamente hablando de dos aplicaciones que continuamente comprueban si hay actualizaciones en sendos procesos de segundo plano. Pero vamos, esto está explicado y bien claro en el artículo.
  • #7 por yules el 15/10/2012
    Desgraciadamente la gestión de la memoria parece ser otra cosa que ha empeorado gravemente con iOS 6 y no es extraño ver que la memoria libre anda en la decena o la veintena de megas con muy pocas aplicaciones en la barra de la multitarea (yo también tengo la "mala" costumbre de cerrarlas si no las voy a necesitar a corto plazo y creo que esto mejora la memoria libre y con ella el rendimiento).

    Ahora mismo lo acabo de comprobar y según una aplicación de gestión de memoria tenía 18 MB libres (una segunda opinión de otra aplicación arroja 26 MB) teniendo en segundo plano Mail, iPod, Ajustes y una aplicación para controlar de cuando en cuando que no se dispare el consumo de datos 3G (otra servidumbre de iOS 6). Después de hacer una purga se ha ido a 176 MB, que ya se parece más a lo que solía tener libre habitualmente con iOS 5.1.1. En todo caso, era raro que estuviera por debajo de los 100 MB.

    Afortunadamente una restauración seguida de recuperación de backup parece haber mejorado el consumo excesivo de batería, aunque yo diría que es aproximadamente 3/4 partes del anterior, pero a las gracias señaladas hay que sumarles que iOS 6 sigue charlando con Internet por su cuenta, de modo que mueve entre 1 y 2 MB de datos diarios sin saber por qué o que el iPod no recuerda la posición en la que se interrumpió la reproducción y comienza a reproducir en el mismo orden la última selección, incluso aunque se haya elegido orden aleatorio. En fin, que entre unas cosas y otras estoy que trino con iOS 6.
  • #8 por yules el 15/10/2012
    Fe de erratas: Cuando hablaba de "3/4 partes del anterior", no quería referirme al consumo sino a la autonomía.
  • #9 por yules el 15/10/2012
    También había olvidado mencionar que estos datos son de un iPhone 4s, no de un 3Gs como en el caso del compañero.

    Otra "gracia" de iOS 6 que no mencioné antes es que si sales de una aplicación con el "botón" de inicio de Assistive Touch, deja de funcionar el bloqueo automático y la pantalla queda permanentemente encendida.
  • #10 por ronum el 17/10/2012
    En mi opinión no hay que darle tantas vueltas. Cuantas más aplicaciones se tengan residentes menos memoria libre quedará y se obligará a que el SO haga más paginación. Resultado, más lento y más consumo.