Al presionar el botón Atrás, me gustaría que mi aplicación pase al estado detenido, en lugar del estado destruido.
En los documentos de Android dice:
... no todas las actividades tienen el comportamiento de que se destruyen cuando se presiona BACK. Cuando el usuario comienza a reproducir música en la aplicación Música y luego presiona ATRÁS, la aplicación anula el comportamiento normal de la espalda, evita que se destruya la actividad del reproductor y continúa reproduciendo música, aunque su actividad ya no sea visible
¿Cómo replicar esta funcionalidad en mi propia aplicación?
Creo que debe haber tres posibilidades ...
Capture el botón de retroceso presione (como se muestra a continuación) y luego llame a cualquier método que llame el botón de inicio.
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { Log.d(this.getClass().getName(), "back button pressed"); } return super.onKeyDown(keyCode, event); }
Capture el botón de retroceso y luego falsifique el botón de inicio.
Capture el botón de retroceso, luego inicie una Actividad de la pantalla de inicio, poniendo efectivamente la Actividad de mi aplicación en el estado detenido.
Editar: conozco los servicios y estoy usando uno en la aplicación con la que está relacionado este problema. Esta pregunta es específicamente acerca de poner la Actividad en el estado detenido en lugar del estado destruido al presionar el botón Atrás.
Respuestas:
La mayoría de las veces necesita crear un Servicio para realizar algo en segundo plano, y su visible
Activity
simplemente lo controlaService
. (Estoy seguro de que el reproductor de música funciona de la misma manera, por lo que el ejemplo en los documentos parece un poco engañoso). Si ese es el caso, entonces suActivity
latafinish
como de costumbre yService
seguirá funcionando.Un enfoque más simple es capturar la
Back
presión del botón y llamar a moveTaskToBack (verdadero) de la siguiente manera:Creo que la opción preferida debería ser que una Actividad finalice normalmente y pueda recrearse, por ejemplo, leer el estado actual de un Servicio si es necesario. Pero
moveTaskToBack
puede usarse como una alternativa rápida en ocasiones.NOTA : como señaló Dave a continuación, Android 2.0 introdujo un nuevo
onBackPressed
método y estas recomendaciones sobre cómo manejar el botón Atrás.fuente
Utiliza el siguiente código:
fuente
Si desea ver el botón Atrás, eche un vistazo a esta publicación en el Blog para desarrolladores de Android . Cubre la forma más fácil de hacer esto en Android 2.0 y la mejor manera de hacerlo para una aplicación que se ejecuta en 1.xy 2.0.
Sin embargo, si su actividad se detiene, aún puede ser eliminada dependiendo de la disponibilidad de memoria en el dispositivo. Si desea que se ejecute un proceso sin interfaz de usuario, debe crear un
Service
. La documentación dice lo siguiente sobre los Servicios:Esto parece apropiado para sus requisitos.
fuente
intenta anular el vacío
onBackPressed()
definido en la clase android.app.Activity.fuente
si ayuda a alguien más, tuve una actividad con 2 diseños que activaba y desactivaba para la visibilidad, tratando de emular una especie de estructura página1> página2. si estaban en la página 2 y presionaron el botón de retroceso, quería que volvieran a la página 1, si presionaron el botón de retroceso en la página 1, aún debería funcionar normalmente. Es bastante básico pero funciona
espero que ayude a alguien, salud
fuente
Ejemplo de trabajo ..
Asegúrese de no llamar a super.onBackPressed ();
De esta manera, el botón Atrás actúa como el botón Inicio. No termina tu actividad, pero llévala a un segundo plano.
La segunda manera es llamar
moveTaskToBack(true);
enonBackPressed
y asegúrese de retirarsuper.onBackPressed
fuente
Aún mejor, ¿qué tal OnPause () :
Se llama como parte del ciclo de vida de la actividad cuando una actividad pasa a un segundo plano, pero (todavía) no se ha eliminado. La contraparte de onResume ().
Cuando se inicia la actividad B frente a la actividad A, esta devolución de llamada se invocará en A. B no se creará hasta que regrese onPause () de A, así que asegúrese de
enter code here
no hacer nada largo aquí.Esta devolución de llamada se usa principalmente para guardar cualquier estado persistente que la actividad esté editando y asegurarse de que no se pierda nada si no hay suficientes recursos para comenzar la nueva actividad sin matar primero esta.
Este también es un buen lugar para hacer cosas como detener las animaciones y otras cosas que consumen una cantidad notable de CPU para hacer el cambio a la siguiente actividad lo más rápido posible, o para cerrar recursos que son de acceso exclusivo como la cámara.
fuente
Anular onBackPressed () después de Android 2.0. Como
fuente
He probado todas las soluciones anteriores, pero ninguna de ellas funcionó para mí. El siguiente código me ayudó cuando traté de volver a MainActivity de una manera que se llama a onCreate:
Intención.FLAG_ACTIVITY_CLEAR_TOP es la clave.
fuente
He usado @Mirko N. answser usando el nuevo Custom EditText
Luego establezca datos de su actividad
Gracias.
fuente