Una cosa me desconcierta. Parece que si uso algún programa en Android y presiono el botón "Inicio", veo la pantalla de inicio y puedo volver a ejecutar el programa y ver ese programa en el mismo estado que antes, por lo que parece que el programa no se reinició por completo, simplemente suspendido y luego reanudado.
Sin embargo, eso no parece suceder consistentemente con el juego Air Control. A veces, cuando estoy jugando Air Control y presiono "home" y luego vuelvo a ejecutar Air Control, está en pausa (como si presionara el botón "pausa") y puedo reanudar el juego. A veces, lo mismo lleva a Air Control a abandonar el juego y comenzar de nuevo.
Entonces parece que no entiendo algo.
¿Cuál es el trato aquí? ¿Qué le sucede a un programa cuando se presiona "home"? ¿Sigue funcionando o qué hace?
fuente
Respuestas:
Al presionar los Homebotones, se pasa de la aplicación a la pantalla de inicio, mientras la aplicación se ejecuta en segundo plano. Esto es un poco como cambiar entre ventanas en una PC con Windows.
Excepto que cuando su teléfono se esté quedando sin recursos, como memoria, comenzará a cerrar aplicaciones que se ejecutan en segundo plano, de modo que su teléfono tenga suficientes recursos para lo que está tratando de hacer ahora. Los juegos suelen estar entre las primeras aplicaciones que el teléfono "matará" para ahorrar recursos, ya que a menudo usan mucha más memoria y CPU que otras aplicaciones. Es por eso que a veces tu juego aún se está ejecutando en pausa, y a veces Android lo ha cerrado por ti.
El Backbotón es la forma de cerrar aplicaciones para que estén realmente cerradas.
Consulte también ¿Cuál es la forma correcta de cerrar aplicaciones en Android?
fuente
El documento de Desarrollo de Android Tareas y Back Stack en realidad cubre esto bastante bien. Un extracto relevante:
Resumen : la tarea se mueve a un segundo plano cuando presiona
Home
y se queda en la memoria, sin hacer realmente nada y conservando su estado. Esto significa que (en general) puede volver a la tarea y continuará donde se quedó. Sin embargo, el sistema Android puede, y lo hará, matar tareas en segundo plano si necesita recuperar memoria. Cuándo y si esto sucede depende completamente del sistema, y probablemente sea por eso que ve un comportamiento inconsistente al reanudar.Si el sistema destruye la tarea, tendrá que volver a crearla cuando la inicie nuevamente. Entonces, a menos que el autor de la aplicación haya tomado medidas para guardar el estado de la aplicación durante el proceso de destrucción, se perderá (y guardar el estado exacto en cosas como los juegos es bastante poco práctico).
Otro documento bueno (pero también detallado) es el que cubre el ciclo de vida de la actividad (hay un buen diagrama de flujo si se desplaza un poco hacia abajo).
fuente
Al presionar la tecla Inicio, el usuario puede iniciar una nueva tarea, mostrando el iniciador. Todas las tareas activas (y, por lo tanto, las actividades, incluido su ejemplo de "Control de aire") llamarán a su
onPause()
método.Depende de la aplicación (y su actividad) restaurar el estado anterior exacto cuando vuelva a estar visible. También es posible que el proceso de aplicaciones se elimine mientras la actividad está en segundo plano, pero esto no debería afectar la experiencia de los usuarios. El usuario no debería ser capaz de distinguir si una Actividad se detuvo o si también se eliminó. Esto podría explicar el comportamiento diferente de Air Control, que podría ser un indicio de una implementación defectuosa de la gestión del ciclo de vida de Android.
fuente
destroy()
los componentes de la aplicación correspondientes.onStop
, se llama al método. Un proceso cancelado no significa que la actividad obtenga suonDestroyed
método, aunque sí es similar. "Matar" un proceso de Actividad significa que la VM se elimina de la RAM. Para mí, esto (Android matándolo) parece afectar la experiencia del usuario.Mi reputación todavía es muy baja en este sitio para votar, así que estoy respondiendo para enfatizar la respuesta de Flow. Me encuentro con este problema en una de mis aplicaciones. Tengo varios controles giratorios y tienes que guardar explícitamente su estado en onPause () y luego restaurar los estados en onResume () - Android no recuerda sus estados automáticamente.
Otra complicación es que a veces Android llamará a la función onCreate () de una aplicación cuando solo esperas que llame a onResume ().
Por lo tanto, su problema con Air Control (o cualquier otra aplicación) es específico de esa aplicación y debe informar el comportamiento al desarrollador para su corrección. La mayoría de las aplicaciones tienen un correo electrónico de contacto en el mercado.
Por cierto, si desea comprender el ciclo de vida de la aplicación, le recomiendo el Capítulo 2 de Hello, Android de Ed Burnette, especialmente la figura 2.3.
fuente
Botón de inicio presionado cuando está en una aplicación:
La mayoría de las aplicaciones guardarán su estado (cualquier bit de datos que se necesitaría para mantenerse coherente cuando se reanude), y el dispositivo cambiará a la aplicación de inicio.
Botón de inicio Presionado cuando está en las pantallas de inicio:
Esto es configurable por muchos lanzadores de terceros; sin embargo, muchos de ellos predeterminan el regreso a la pantalla de inicio "principal" (el iniciador predeterminado hace esto).
Lo que podría preocupar a tu amigo:
El cambio de aplicaciones puede consumir mucha memoria y hacer que varias escrituras en disco guarden los datos. Esto usa batería; sin embargo, generalmente no es la causa principal del agotamiento de la batería en los dispositivos (los sistemas operativos están optimizados para hacer estas cosas).
Algunas aplicaciones continuarán ejecutándose como una aplicación en segundo plano, por lo que presionar el botón de inicio no las eliminará (por ejemplo, Google Play Music seguirá reproduciéndose después de presionar el botón de inicio).
Su amigo podría estar preocupado de que al presionar el botón de inicio no haya salido del programa y, por lo tanto, todavía se está ejecutando. Android descargará esas aplicaciones según sea necesario.
Usted y su amigo deberían preocuparse más por la pantalla, que utiliza la mayor cantidad de energía.
fuente