Cerrar aplicaciones [duplicado]

Supongo que esto tiene que ver con nuestro hábito en las computadoras de escritorio donde

  1. abrir una aplicación
  2. úsalo
  3. cerrar la aplicación

AFAIK no hay una forma directa desde dentro de la aplicación para cerrarla. Y al presionar el botón de inicio, la aplicación simplemente pasa a un segundo plano. Sigue corriendo.

Tengo la costumbre de presionar Inicio, luego Aplicaciones recientes y sacar todas las aplicaciones abiertas.

¿Es esto un mal hábito? ¿Debo dejar aplicaciones como GMail, FB, Currents, GNow, etc. ejecutándose o es mejor cerrarlas y tener la menor cantidad posible de aplicaciones ejecutándose?

AFAIK, arrojar las aplicaciones desde la vista de aplicaciones recientes no las cierra, sino que simplemente las elimina de su vista para que no haga nada más que aclarar su desorden de aplicaciones recientes. Puede ser útil si tiene muchas aplicaciones abiertas.
Para obtener una perspectiva un poco más antigua sobre esto, incluida la diferencia entre presionar los botones Inicio y Atrás para salir de una aplicación, consulte ¿Cuál es la forma correcta de cerrar aplicaciones en Android?
Solo para corregir el comentario que hizo @Propeller (al menos para las versiones recientes de Android), eche un vistazo a ¿Qué sucede realmente cuando desliza una aplicación de la lista de aplicaciones recientes?

Respuestas (4)

Desde el punto de vista de los desarrolladores (mi punto de vista):

Las aplicaciones en Android funcionan de una manera específica, todas tienen su propio ciclo de vida, los principales de los que estamos hablando aquí son cuando la aplicación está en pausa o detenida (onPause, onStop) y cuando la aplicación se destruye (onDestroy), estos dos los estados se revelan de diferentes maneras, onPause es cuando el usuario ya no puede ver la aplicación o la pantalla, esto es cuando el usuario presiona inicio o hace clic en algo en la pantalla que lo lleva a otra pantalla, como presionar un enlace, por ejemplo , aún existe la posibilidad de que necesite esta pantalla, por ejemplo, cuando presiona el botón Atrás para volver a la pantalla, todavía la desea en el mismo estado, por lo que la aplicación aún está abierta y esperando que regrese.

El otro estado, cuando se destruye la aplicación, puede ocurrir de tres maneras, en primer lugar, el desarrollador podría haber agregado algo para cerrar la aplicación automáticamente, por ejemplo, la aplicación Endomondo puede presionar menú> salir, esto "cerrará" la aplicación y ya no estará en la memoria. La siguiente forma es que el usuario presione hacia atrás, ya que no hay forma de volver a la pantalla exacta (por ejemplo, no puede presionar hacia adelante para acceder a ella), por lo que la aplicación ya no es necesaria, por lo que se cierra.

La tercera forma en que se destruye o cierra una aplicación es cuando Android necesita más memoria, cuando esto sucede, borra las aplicaciones que no han tenido interacción por más tiempo. Android hace esto por sí mismo, si necesita más memoria, la obtendrá.

Por lo tanto, dejar las aplicaciones abiertas no es malo, sin embargo, algunas aplicaciones aún pueden usar mucha potencia de CPU y no memoria cuando están en segundo plano, si cree que esto va a suceder, debe cerrarlo usted mismo, Android debería ser capaz de captar esto sin embargo

Echa un vistazo aquí a los estados de una actividad, o una pantalla:

Ciclo de vida de la actividad


EDITAR:

  • Pulsando atrás en una pantalla: Actividad destruida ( onPause > onStop > onDestroy)
  • Deslizar la aplicación en aplicaciones recientes: Actividad destruida ( onPause > onStop > onDestroy)
  • Presionar inicio: la aplicación se mantiene en la memoria, solo si el desarrollador no ha agregado una función de cierre automático ( onPause > onStop)
  • Navegación fuera de la aplicación, enlace, etc.: aplicación guardada en la memoria, como arriba ( onPause > onStop)
Yo también soy desarrollador, por lo que mi cerebro consume esta información con mucha facilidad... :) Entonces, ¿dónde en el diagrama de flujo está el evento cuando presiono Aplicaciones recientes y deslizo una aplicación (entiendo que este acto en realidad cierra la aplicación)? ¿ Entre onPause y onStop o entre onStop y onDestroy ? Si es lo último, explique la transición de estado entre el primero. Pero si es el primero, ¿puedo ver la transición a onDestroy similar a la recolección de basura? ¿Evento no determinista?
echa un vistazo a la edición, piensa que eso es lo que quieres.
Un poco... Pero creo que te equivocas en el n.° 1 y el n.° 4. Al presionar Atrás, la aplicación se detiene y no se destruye . Todavía está en aplicaciones recientes. Así que lo mismo que presionar home. y con el n.° 4: navegar lejos (es decir, vincular) hace que la aplicación entre en estado de pausa según el diagrama de flujo.
Por cierto: mientras probaba esto con la aplicación GMail, encontré un error cuando se reanuda desde el estado detenido . :)
La actividad teóricamente debería estar terminando en 1 y acerté en 4, onPause > onStopes correcto

La respuesta es simple: ¡No cierres aplicaciones cuando sea posible!

Android se encarga de la gestión de aplicaciones dejándolas permanecer (lo que no es necesario en la memoria) cuando sea posible, lo que permite tiempos de inicio más rápidos y reanudación donde lo dejó. Deslizar una aplicación de la lista de aplicaciones recientes es similar a cerrarla, pero no es lo mismo.

Esto no es técnicamente mejor . Una de las principales características de Android es la de simular la multitarea . Cuando cambia la aplicación a otra (sí, incluso Home Launcher es una aplicación), Android detiene la actividad actual e intenta cargar los datos de la siguiente en la memoria. Entonces, aquí pueden pasar dos cosas:

  • Si hay suficiente memoria libre, los datos se cargan y se inicia la nueva actividad. En este escenario, no hay problema para volver a la última aplicación, ya que ya se está ejecutando;
  • Si falta memoria, Android tiene que "hacer una copia de seguridad" de los datos de la actividad actual en el almacenamiento interno. Esto tiene un costo y un retraso; después de hacer eso, Android finalmente puede cargar la nueva actividad en la memoria.

Desde el punto de vista del rendimiento, mantener tantos datos como sea posible en la memoria RAM es beneficioso. El hecho de que los datos de una aplicación aún estén en la memoria no significa que esté consumiendo recursos de la batería, a menos que haya un servicio en ejecución, lo que no siempre es así.

Por lo tanto, presionar los botones Homeo Backtiene en la práctica el mismo efecto sobre el uso de la memoria. Android está diseñado para administrar la RAM por sí mismo, y no es una buena idea eliminar aplicaciones a menos que realmente sepas lo que estás haciendo.

Muchas personas comienzan a tener problemas cuando usan muchas aplicaciones que ejecutan servicios en segundo plano. Algunos servicios tienden a permanecer siempre en la memoria realizando alguna tarea (como mantenerlo en línea, verificar si hay nuevos mensajes, etc.). Esto cuesta más recursos (memoria y batería), y si su teléfono está lento todo el tiempo, es una buena idea verificar qué servicios se están ejecutando y tal vez desinstalar algunos de ellos (puede verlos en Configurations/Applications/Running services).

Si desea obtener más información al respecto, debe consultar esta publicación: http://android-developers.blogspot.com.br/2010/04/multitasking-android-way.html

Según tengo entendido, se supone que Android se ocupa de esto por sí mismo. Muchas aplicaciones tienen servicios que se ejecutan casi por separado de la parte visible y parte del ciclo de vida de las aplicaciones de Android es que el sistema operativo puede optar por cerrar los hilos como mejor le parezca.

Pero enterrada en los documentos tan bien que no recuerdo exactamente dónde está, está la información de que "Retroceder" de una aplicación tenderá a cerrarla en lugar de si solo vas a "Inicio". Las aplicaciones con uso intensivo de gráficos como 'Angry Birds' deberían cerrarse así, de hecho, porque la aplicación tiene la oportunidad de cerrar correctamente los subprocesos que hacen un uso intensivo del procesador.