La App de Facebook “abusa” de la ejecución en background y se “come” la batería, por Pablo Romeu

Hace unos días que la gente pregunta si la App de Facebook para iOS se come la batería o no, así que como tengo los instrumentos necesarios para comprobarlo, he decidido ver qué pasa con la dichosa App.

En el curso que imparto en la UCH-CEU explicamos cuál es el problema del consumo de la batería. Apple permite que las aplicaciones se ejecuten en segundo plano en distintos modos. Uno de ellos te permite ejecutar cualquier cosa en background durante unos 10 minutos aproximadamente – no siempre son los mismos – para evitar que te prolongues ejecutando tu app indefinidamente y te “comas” la batería. ¿Qué pasa con esto? Que cada vez que abres la app, esa “cuenta atrás” se resetea y te permite ejecutar de nuevo esos 10 minutos. Lo cierto es que es algo que está muy bien y es muy útil, pero Apple te pide que cuando termines de hacer lo que quieres hacer, “avises” a iOS para que termine tu ejecución, cosa que, si eres un buen programador, haces. La razón es muy simple: un proceso corriendo consume batería. Moraleja: si no lo usas, termínalo. Pero… ¿y si no lo haces? Pues ahí se queda durante 10 minutos.

Pero la cosa es peor. Parece ser que hay una forma de saltarse esta restricción. En este hilo dicen que es posible hacer correr una app en background más de 10 minutos: http://stackoverflow.com/questions/9738488/run-app-for-more-than-10-minutes-in-background y qué mejor forma de comprobarlo que hacer un programa. Así que he cogido una de mis Apps y le puesto un código que cada 60 segundos pide a iOS que una nueva tarea en background y cada vez que pido una nueva tarea, he loggeado el tiempo que iOS me da para terminarla. Pues esto es lo que aparece por pantalla cada 60 segundos:

2013-06-06 14:19:44.824 Salterio Pro[3743:c07] -[SPAppDelegate longRunningTest]:Time extended,599.998372

2013-06-06 14:20:14.907 Salterio Pro[3743:c07] -[SPAppDelegate longRunningTest]:Time extended,599.99928

[… Muchos minutos después …]

2013-06-06 14:48:44.809 Salterio Pro[3743:c07] -[SPAppDelegate longRunningTest]:Time extended,599.999273

2013-06-06 14:49:14.890 Salterio Pro[3743:c07] -[SPAppDelegate longRunningTest]:Time extended,599.999387

Es decir, que se puede hacer que una app corra durante más de 10 minutos en background sin control. ¡Apple BIG FAIL!

Para ver qué hacía Facebook, lo que he hecho es coger Instruments, que permite hacer mediciones de programas de iOS, conectar mi iPhone 5 y ver qué pasa con la dichosa aplicación. He hecho varias pruebas de más de 10 minutos, para ver qué pasa con la App siempre repitiendose el mismo patrón:

  • He arrancado la app
  • En el segundo 14 aprieto el botón Home de mi iPhone. La app pasa a background.
  • La app se mantiene en ejecución hasta el instante 2:14. Arranca durante unos 3-4 segundos y se para.
  • 8 minutos después aproximadamente, la app se arranca unos 3-4 segundos y se para.
  • 8 minutos después aproximadamente, lo mismo.

Ejecución App Facebook

He hecho esto tres veces y las tres veces sale exactamente igual. Durante la ejecución de la imagen no he recibido ni una notificación.

¿Esto que significa? Que cada 8 minutos Facebook se arrancará y si hay información nueva en tu Facebook se descargará parte de la información. Y eso, claro está, consume batería. ¿Cuanta? Pues depende del tiempo de CPU y de la descarga. Pero sí, es un consumo permanente cada 8 minutos.

Salvo que yo haya metido la pata en algo, parece que sí, que la App de Facebook arranca varias veces en background. ¿Y eso es puede hacer? Pues no, no se puede. Es una cosa que puede hacer que Apple se la “cargue” de la AppStore:

2.16 Multitasking Apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc.

13.2 Apps that rapidly drain the device’s battery or generate excessive heat will be rejected

P.D.: No sé si tiene que ver con esto o no, pero muchas veces las notificaciones de Facebook no “suenan” en el dispositivo. Es posible que se deba a que la aplicación en realidad no recibe las notificaciones cuando está suspendida, sino ejecutándose en background. Cuando una App está ejecutándose las notificaciones no “suenan”. ¿Os pasa lo mismo?.

Pablo Romeu es Profesor colaborador licenciado de Ingeniería Informática e Ingeniería Técnica Informática de Gestión en la Universidad Cardenal Herrera -CEU además de desarrollador de aplicaciones iOS.

0 0 votos
Article Rating
Subscribe
Notify of
20 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
wenmusic
10 years ago

Pues para descargarse cosas en background luego cuando entras no tienen nada y has de refrescar. Ah, y la aplicación es un asco, un asco absoluto. Cada vez que la actualizan empeora a pasos de gigante.

Yo las notificaciones no se las tengo ni loco, es lo que me faltaba, si entro veo, si no nada.

Pregunto yo: si cerramos el proceso evitamos esto, no?

wenmusic
10 years ago

Estoy pensando yo que a lo mejor si se tiene la aplicación configurada como yo, sin notificación alguna, quizá su comportamiento sea distinto. Yo la verdad es que así como la aplicación me da asco, nunca he notado problemas de batería, para nada.

Javier Arántegui
Javier Arántegui
10 years ago

No sé si es una errata o que yo estoy un poco espeso. ¿Quién es el autor del artículo? ¿Carlos Burges o Pablo Romeu?

Rafa Espada
Rafa Espada
10 years ago

Yo vivo mucho más feliz desde que me suicidé en facebook!!!

Pablo Romeu Guallart
Pablo Romeu Guallart
10 years ago

#1 si, si finalizas la aplicación esto no puede pasarte.

#4 interesante pregunta. Si tengo un rato lo pruebo

Harkaitz
Harkaitz
10 years ago

Si ya me daba asco la aplicacion de facebook, ya con esto la he quitado de en medio!

ATPC facebook!

sault
10 years ago

Facebook for iOS sucks…

cocoloku
cocoloku
10 years ago

En mi caso es peor 🙁
Pulso home, al 1:30 y 2:30 picos de 2 segundos
en el minuto 3 y 29”, 10 segundos de actividad
en el minuto 10 y 3″, otros 10″
en el minuto 12 y 2″otros 10″
en el minuto 20 otros 10″…….
¿?

antonioquevedo
antonioquevedo
10 years ago

Y no solamente es una traga bateria, es que tambien se cierra en cualquier momento y demasiado lenta. Otra vez esta app va de mal en peor!!

wenmusic
10 years ago

#6 Genial, interesante será ver tus conclusiones, a ver si mi intuición (o desconfianza innata con estas cosas) va a acertar 😀

Alquimista
Alquimista
10 years ago

#6 No estoy seguro de que eso sea así.
Cierro todas las aplicaciones, nada ejecutándose en la sombra. A rato aparece un aviso de que hay una contestación a un comentario de FB: desbloqueo y automáticamente se abre FB ¡!
Y sí, la batería se vacía como por encanto. Creo que voy a recuperar la versión anterior; que bueno es eso de ir guardando las versiones anteriores…

Yules
Yules
10 years ago

Yo no gasto Facebook, pero recuerdo que hace un tiempo una amiga me dejó su iPhone 4 porque le daba avisos de falta de espacio a pesar de que había ido borrando aplicaciones para ganarlo. Cuando le miré las tripas, tenía 4 GB de caché de Facebook.

Pablo Romeu
Pablo Romeu
10 years ago

#10 ¿Tienes alguna gráfica? Es posible que el programador haya puesto que la aplicación se despierte en un tiempo aleatorio o que el tiempo no sea fijo. Así, a quien le ha “tocado” menos de 3-4 minutos se le funde la batería y a los que les ha “tocado” como a mi 8 minutos, pues no tanto. Estaría curioso comprobarlo

#13 Eso es porque tienes activadas las notificaciones. Las notificaciones las recibe iOS, no la app de Facebook. Así es como TODAS las aplicaciones reciben notificaciones sin gastar más batería de lo normal y así es como debería funcionar Facebook.

Alquimista
Alquimista
10 years ago

Gracias Pablo,
¿Eso se puede cambiar solo al actualizar la app? Porque es la primera vez que lo hace…
De todas formas le he dado un repaso a las notificaciones y las he reducido a lo esencial; veremos qué tal va.

lordshin
lordshin
10 years ago

Con la aplicacion de facebook y con la de Google ya tienes el iphone completo.

wenmusic
10 years ago

Mi recomendación es quitar las redes sociales de las notificaciones, de veras. ¿Realmente se necesita recibir los Me Gusta o los RT en tiempo real, de verdad?

Por otra parte, sobre el espacio que va ocupando Facebook con el tiempo, esto le pasa a más aplicaciones, como Instagram o Dropbox, que guardan caché hasta aburrirse (en el caso de dropbox debe ser de guardar en local favoritos y luego no libera el espacio aunque los quites de favoritos) y no tienen opción alguna de liberar esas cachés, lo cual es una chapuza inaceptable.

Yo cojo, y cada ciertos meses las desinstalo y vuelvo a instalar. Lo malo es que hay que volver a revisar lo de las notificaciones para que no me den la vara, porque si no por ellas venga a notificar…

Y comento esto por salud, y porque la batería a mí me dura entre 2 y 3 días. Por eso lo digo.

gilbertmc
gilbertmc
10 years ago

Me encantaria que la rechazaran

juan.varios
juan.varios
10 years ago

Estos “malos funcionamientos” me recuerdan a los malos funcionamientos que yo sufro con el “ESCRITORIO REMOTO” de Microsoft que uso en mi iMac para acceder a equipos Windows. ¡¡¡¡¡ Se cuelga y se come la memoria y procesador, y tengo que forzar el cierre de la aplicación vía fuerza bruta, no sin grandes esfuerzos y paciencia porque va a pedales. Aunque esté OFF-TOPIC .. ¿alguna solución al respecto?

20
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x