Las respuestas proporcionadas son precisas, solo quiero aclarar desde el punto de vista de un desarrollador de iOS.
iOS está diseñado para gestionar tantas cosas como sea posible para que tú (y los desarrolladores) no tengáis que preocuparos por ellas. El resultado final es un enfoque algo consistente en todas las aplicaciones, incluidas las de Apple (aunque a veces Apple misma se salta algunas esquinas).
Dicho esto, la premisa es:
- iOS sabe más sobre la memoria que nosotros. Sabe cuánta tiene y cuánta necesita (hasta cierto punto).
- iOS tiene control total sobre la memoria; tiene la última palabra sobre quién usa qué.
- Si iOS necesita memoria, la encontrará, y esto generalmente se hace matando otros procesos que han estado inactivos durante algún tiempo (y hay muchas reglas detrás de escena, no las conocemos todas, y realmente no nos preocupamos por ellas).
- Todo lo que hace un Procesador (CPU) consume energía. Absolutamente todo. No olvides que las computadoras son solo contenedores de electrones muy pequeños que los mueven en espacios muy pequeños.
- Cuando se mata una aplicación, hay algunos protocolos acordados que definen qué se debe hacer. iOS hace cumplir y lleva a cabo estos protocolos. Pero el trabajo debe hacerse, no es gratuito y ciertamente no siempre es barato (realmente depende de la aplicación).
Dicho todo esto, uno asume que la mayoría de los usuarios cierran aplicaciones con la esperanza de aumentar la duración de la batería, bajo la impresión de que al cerrar cosas, se desperdicia menos energía manteniendo esas aplicaciones en funcionamiento.
La verdad es que, en iOS, esto casi nunca es el caso. Cuando presionas inicio, la aplicación se suspende y deja de usar recursos que otra aplicación podría necesitar. Si una nueva aplicación (o incluso iOS) necesita esa memoria, se encargará de ella por sí misma, pero solamente si es necesario.
Al cerrar las aplicaciones una y otra vez, estás obligando a iOS a realizar esa tarea potencialmente costosa de descargar realmente una aplicación, guardar su estado y otras cosas, con el problema añadido de que cuando vuelves a abrir la aplicación, todo eso tiene que revertirse y, dependiendo de la complejidad de la aplicación, muchas cosas deben leerse desde el almacenamiento, hasta la memoria principal del teléfono, y así sucesivamente. Todo este trabajo adicional podría haberse evitado si simplemente permitieras que la aplicación permaneciera en su estado "suspendido".
Sin embargo…
En algunos casos (y son raros pero no imposiblemente raros), querrás matar aplicaciones que se están comportando mal. Ejemplos son (pero no se limitan a): Aplicaciones que manejan audio en segundo plano, o servicios asíncronos como la ubicación (donde la aplicación solicita una ubicación y iOS debe ir a buscar dónde está, por ejemplo, activando el GPS si es necesario), transmisión de video, etc.
He tenido innumerables instancias de aplicaciones como Lyft, United Airlines, incluso Twitter, que terminan en un estado defectuoso (o simplemente no funcionan correctamente), ya sea porque estás en una red mala (iOS ha tenido problemas para recuperarse de algunas redes malas en las últimas 3-4 versiones) o la red simplemente no responde correctamente.
Con el tiempo, la mayoría de estos problemas tienden a desaparecer y la aplicación vuelve a funcionar; pero si realmente necesitas que la aplicación funcione ahora, entonces debes seguir adelante y pagar el precio de tener que matarla y reiniciarla desde cero. Estás usando más batería al hacer eso, pero, hey, lo necesitabas.
Y si esto fue confuso, puedo darte una analogía con un coche, porque eso es lo que solemos hacer todo el tiempo.
La Analogía del Coche
<em>Sé que la tecnología de los coches ha avanzado y este ya no es un buen ejemplo, pero juega conmigo aquí</em>.
Arrancar el motor de un coche solía consumir más combustible que solo dejarlo en ralentí. Cuando los coches tenían carburadores en lugar de inyectores, esto era aún peor; por eso, apagar el motor cuando paras en un semáforo rojo, teóricamente podría usar más combustible que simplemente mantenerlo en ralentí durante un minuto. Los coches más nuevos tienen un mecanismo mucho más eficiente y pueden apagar el motor, pero quedarse en un estado semi-arrancado (no nos adentremos demasiado en los coches).
Cerrar aplicaciones equivale a una persona apagando el coche en cada semáforo. En lugar de simplemente dejarlo en ralentí hasta que lo necesites de nuevo, normalmente unos segundos después.
La analogía no es perfecta, ya que los coches en ralentí siguen consumiendo combustible, mientras que las aplicaciones suspendidas no lo hacen; sin embargo, a los ojos del teléfono, no están utilizando ninguna memoria/batería (siempre y cuando no tengan algún tipo de procesamiento en segundo plano activo, obviamente).
Básicamente estás apagando tu motor cada vez que matas una aplicación, y no estás dejando que el mecanismo "inteligente" de iOS ponga en ralentí tu motor, para que cuando el semáforo se ponga en verde, simplemente puedas presionar el acelerador y el motor esté funcionando más rápido de lo que lo haría si estuviera completamente detenido. Arrancar un motor desde un estado detenido también consume más energía que solo combustible, necesitas arrancar el motor para que se pueda arrancar, inyectando combustible y creando chispas, así que… hay mucho trabajo detrás de escena. Las aplicaciones son como motores. :)
31 votos
La idea equivocada es la parte de "correr". Las aplicaciones en el Switcher no necesariamente están corriendo, de hecho la mayoría de ellas no lo están. Piénsalo más como una lista de "usados recientemente" que como un monitor de procesos.
3 votos
Al igual que patrix, me gustaría agregar que iOS cierra aplicaciones automáticamente cuando se está quedando sin memoria, por lo que aunque parezca que hay 50 aplicaciones "ejecutándose", si estás viendo un video hay una gran posibilidad de que las otras 49 hayan sido terminadas después de 2/3 minutos. El conmutador de aplicaciones solo muestra una captura de pantalla reciente de esas aplicaciones en este punto.
5 votos
@CodedMonkey Estoy bastante de acuerdo con tu comentario, sin embargo la aclaración que haría es que los otros 49 no serían terminados, sino suspendidos. La diferencia es que cuando una aplicación es terminada ya no está residente en la memoria, mientras que estar suspendida significa que no está visible en pantalla, ni ejecutando código. En este estado no está utilizando el procesador o la batería, pero sigue estando residente en la memoria. Sin embargo, dicho esto, utilizando tu ejemplo, mi suposición sería que iOS podría terminar algunas de las otras 49 aplicaciones, pero mantener la mayoría en estado suspendido.
8 votos
Probablemente necesitamos abordar el elefante en la habitación: ¿Qué te hace decir "solo mantén todas estas aplicaciones funcionando" - y específicamente, ¿qué significa "cerrar las aplicaciones"? - iOS 11 ejecuta un máximo de tres aplicaciones y algunas aplicaciones reciben activaciones periódicas en segundo plano (por diseño) si estamos hablando del sistema operativo en términos generales. Si esto está destinado a ventilar el debate sobre si eliminar las miniaturas de imágenes de aplicaciones guardadas de la interfaz de usuario de la multitarea, aclaremos eso en la pregunta.
3 votos
Realmente horrorizo a mis amigos al tener (en este momento) 314 pestañas abiertas en Safari y 57 aplicaciones "abiertas".
1 votos
@Monomeeth No hay forma de que iOS mantenga 50 aplicaciones suspendidas al mismo tiempo, a menos que cada una de ellas tenga un tamaño de memoria verdaderamente microscópico. Estimo, basándome en mis propios dispositivos y patrón de uso, que solo las 3-10 aplicaciones más recientes se mantienen en modo suspendido. Si paso mucho tiempo en una sola aplicación grande (YouTube, Twitter, Safari, etc.) incluso la próxima aplicación usada más recientemente se recarga por completo cuando cambio de nuevo. Claramente, más RAM mejoraríA esto en cierta medida, uso un iPhone 6 con 1GB de RAM.
1 votos
@BradC La experiencia de cada persona será diferente, no solo por la cantidad de RAM disponible en su dispositivo, sino también por las aplicaciones que utilizan, ambos puntos que reconoces correctamente. :) En mi experiencia personal con un iPhone 6s (2GB de RAM) y las aplicaciones que uso regularmente, no suelo experimentar una recarga completa, ciertamente es mucho menos frecuente de lo que solía ser en, por ejemplo, un iPhone 5 con 1GB de RAM ejecutando iOS 8, pero por supuesto no es tan bueno como los modelos más nuevos con 3GB de RAM ejecutando iOS 11. Que llegue el próximo año y seguramente tendremos 4GB de RAM en los nuevos iPhones.
0 votos
@patrix es difícil pensar en ello como "recientemente usado" cuando recuerda dónde lo dejaste, pero no si lo "cierras".
1 votos
@EdmundReed Mantener un estado de reinicio es posible incluso sin que la aplicación esté en ejecución. Y no todas las aplicaciones realmente admiten esto.