¿Cómo puedo matar una actividad cuando se presiona el botón Atrás?

Obtuve una Actividad que cuando comienza, carga una imagen de internet. En un esfuerzo por ahorrar memoria, cuando la actividad se deja presionada por el botón Atrás, quiero que la actividad elimine todos los datos, es decir, que elimine todas las cadenas e imágenes que contiene. Pensé que la mejor manera de hacerlo era simplemente matar la actividad.

Bueno, parece que no puedo entender la callback cuando se presiona el botón Atrás. Por lo tanto, he estado tratando de utilizar las devoluciones de llamada onPause() y onStop() para la tarea, pero ambas formas fuerzan el cierre de mi aplicación. Aquí está el código:

 public void onPause() { this.finish(); } public void onStop() { finish(); } 

Intenté varias variaciones de esto, pero ninguno de ellos pareció funcionar. ¿Algunas ideas?

agregar esto a tu actividad

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { finish(); } return super.onKeyDown(keyCode, event); } 

Simple Override onBackPressed Método:

  @Override public void onBackPressed() { super.onBackPressed(); this.finish(); } 
 public boolean onKeyDown(int keycode, KeyEvent event) { if (keycode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); } return super.onKeyDown(keycode, event); } 

Mi aplicación se cerró con el código anterior.

En primer lugar, finish() no destruye su proceso y libera la memoria. Simplemente elimina la actividad de la stack de actividades. Tendría que matar el proceso, que se responde en un montón de preguntas (ya que esto se hace varias veces).

Pero la respuesta correcta es – No lo hagas. el sistema operativo Android liberará automáticamente la memoria cuando necesite memoria. Al no liberar memoria, su aplicación se iniciará más rápido si el usuario vuelve a ella.

Por favor, mira aquí para una excelente reseña sobre el tema.

Bueno, si estudias la estructura de cómo funciona el ciclo de vida de la aplicación, aquí sabrás que se llama a onPause() cuando otra actividad gana foco, y se llama a onStop() cuando la actividad ya no es visible .

Por lo que he aprendido aún, puedes llamar a finish() solo desde la actividad que está activa y / o tiene el foco. Si llama a finish() desde el método onPause() , significa que lo está llamando cuando la actividad ya no está activa. por lo tanto, se lanza una excepción.

Cuando llame a finish() desde onStop() , la actividad se enviará a segundo plano y, por lo tanto, ya no estará visible, esta excepción.

Cuando presiona el botón onStop() , se llama a onStop() .

Lo más probable es que Android automáticamente haga por ti lo que estás deseando hacer actualmente.