2011-01-04 17 views
11

Cuando ejecuto mi aplicación en el depurador, obtengo el hilo principal y 3 hilos de enlace.Activity.finish() llamado pero la actividad permanece cargada en la memoria

En un botón, haga clic en Llamar Activity.finish(), que parece que finaliza la actividad cuando la IU se cierra y vuelve a la pantalla de inicio.

Sin embargo, en el depurador, todavía muestra el hilo principal y 3 hilos de enlace como "(en ejecución)".

Estoy desconcertado por qué está sucediendo esto. Aún más, hace que mi aplicación llame al Activity.onResume() cuando lo ejecuto de nuevo después de salir de la aplicación.

Actualmente puedo reemplazar estos métodos en la actividad, pero que llamo las funciones apropiadas de super en cada uno:

  • OnDestroy()
  • onPause()
  • onResume()
  • onSaveInstanceState ()

¡Cualquier ayuda o consejo con respecto a esto es muy apreciada!

+0

Lea acerca de la actividad del ciclo de vida. Y entiendo esto http://www.androidjavadoc.com/1.0_r1_src/android/app/doc-files/activity_lifecycle.png – fiction

+0

Hola, ficción, he leído la documentación muchas veces y la imagen que publicaste fue donde entendí de. Estaba confundido al ver que se estaba reanudando en lugar de reiniciar después de llamar a Activity.finish(). – twig

Respuesta

22

No controla cuándo su aplicación sale de la memoria principal, el sistema operativo sí. Mira de cerca a Activity.finish ...

Llame a este cuando su actividad se realiza y debe cerrarse. El ActivityResult se propaga nuevamente a quienquiera que lo haya lanzado a través de en ActivityResult().

Tenga en cuenta que no dice nada acerca de la memoria. En cuanto a llamar Activity.onResume, eso es exactamente lo que esperarías para el ciclo de vida; Recuerde que onResume no solo se llama después de un currículum, sino incluso cuando la aplicación se inicia por primera vez después de onCreate.

Aunque no es exactamente lo que pidió le sugiero que lea this article about exit buttons que va a decir algo muy importante

[Activity.finish] es exactamente equivalente a golpear el botón de retroceso.

+3

Gracias por ese Andrew, eso fue un poco abridor de la mente. Siempre he pensado que Activity.finish() lo cierra en lugar de ponerlo en la cola para su cierre. Tengo que volver a trabajar en ese caso. – twig

Cuestiones relacionadas