Encontré algunos códigos para salir de una aplicación de Android mediante programación. Al llamar a cualquiera de los siguientes códigos en onDestroy (), ¿saldrá por completo de la aplicación?
System.runFinalizersOnExit(true)
(O)android.os.Process.killProcess(android.os.Process.myPid());
No quiero ejecutar mi aplicación en segundo plano después de hacer clic en el botón Salir. Pls me sugiere ¿puedo usar cualquiera de estos códigos para salir de mi aplicación? Si es así, ¿qué código puedo usar? ¿Es una buena forma de salir de la aplicación en Android?
Respuestas:
Desde API 16 puede usar el método finishAffinity, que parece estar muy cerca de cerrar todas las actividades relacionadas por su nombre y descripción Javadoc:
Desde API 21 puedes usar un comando muy similar
fuente
System.exit(0);
. ¡Gracias por su respuesta! Finalmente encontré una solución decente.System.exit(0)
es la única solución que funcionó para mí.¡Esta es la mejor manera de salir de tu aplicación!
La mejor solución para mi.
fuente
System.exit(0);
. @Sivi publicó la solución correcta (su respuesta está arriba)finishAffinity();
System.exit(0);
Si lo usará solo
finishAffinity();
sinSystem.exit(0);
su aplicación, se cerrará, pero la memoria asignada seguirá siendo utilizada por su teléfono, así que ... si desea una aplicación limpia y realmente cerrada, use ambas.Este es el método más simple y funciona en cualquier lugar, salga de la aplicación de verdad, puede tener mucha actividad abierta y se cerrará sin problemas.
ejemplo en un clic de botón
o si desea algo agradable, ejemplo con un cuadro de diálogo de alerta con 3 botones SÍ NO y CANCELAR
fuente
System.exit(0);
No debe liberar esa memoria, el sistema lo hará por usted si lo necesita. Este es el comportamiento previsto.Por favor, piense mucho si necesita eliminar la aplicación: ¿por qué no dejar que el sistema operativo descubra dónde y cuándo liberar los recursos?
De lo contrario, si está absolutamente seguro, use
Como reacción al comentario de @dave appleton: Lo primero que debe leer es el gran combo de preguntas / respuestas que @gabriel publicó: ¿Está mal cerrar una aplicación?
Ahora suponiendo que tengamos eso, la pregunta aquí todavía tiene una respuesta, ya que el código que necesita si está haciendo algo para dejar de fumar es
finish()
. Obviamente, puede tener más de una actividad, etc., etc., pero ese no es el punto. Vamos a ejecutar algunos de los casos de usoAsí que al final, por supuesto,
finish()
no mata a todo, pero creo que sigue siendo la herramienta que necesitas. Si hay un caso de uso para "matar todas las actividades", aún no lo he encontrado.fuente
finish()
no matará la aplicación.finish()
se usa todo el tiempo:Call this when your activity is done and should be closed.
tiene el mismo efecto que presionar el botón "atrás".Activity
(no elApplication
). Por ejemplo, puede comenzar una nueva actividad para mostrarle al usuario cierta información. Después de un tiempo de espera o presionando 'Aceptar', puede llamarfinish()
para volver a la actividad de llamada.Creo que esa aplicación debería ser matar en algún caso. Por ejemplo, hay una aplicación que se puede usar solo después de iniciar sesión. La actividad de inicio de sesión tiene dos botones, 'iniciar sesión' y 'cancelar'. Cuando haces clic en el botón "cancelar", definitivamente significa "Finalizar la aplicación". Nadie quiere la aplicación viva en segundo plano. Así que estoy de acuerdo en que algunos casos necesitan cerrar la aplicación.
fuente
Crea un
ExitActivity
y declaralo en manifiesto. Y llameExitActivity.exit(context)
para salir de la aplicación.fuente
No hay aplicaciones que se cierren en Android cierra la , SampleActivity.this.finish (); finalizará la actividad actual.
Cuando cambies de una actividad a otra, termina la anterior.
fuente
En primer lugar, este enfoque requiere min Api 16.
Dividiré esta solución en 3 partes para resolver este problema más ampliamente.
1. Si desea salir de la aplicación en una Actividad, use este fragmento de código:
2. Si desea salir de la aplicación en una clase que no sea Activity y que tenga acceso a Activity, use este fragmento de código:
3. Si desea salir de la aplicación en una clase que no sea de Actividad y no puede acceder a Actividad como Servicio, le recomiendo que use BroadcastReceiver. Puede agregar este enfoque a todas sus actividades en su proyecto.
Cree variables de instancia LocalBroadcastManager y BroadcastReceiver. Puede reemplazar getPackageName () + ". Closeapp" si lo desea.
Agregue estos al método de Actividad onCreate ().
Además, no olvide llamar al receptor para cancelar el registro en el método de actividad onDestroy ()
Para salir de la aplicación, debe enviar la transmisión utilizando LocalBroadcastManager que uso en mi clase PlayService que extiende el Servicio.
fuente
Puedes usar
finishAndRemoveTask ()
desde API 21fuente
Depende de qué tan rápido quieras cerrar tu aplicación.
Una forma segura de cerrar su aplicación es terminarAffinity ();
Cierra su aplicación después de que todos los procesos hayan finalizado el procesamiento. Esto puede necesitar algo de tiempo. Si cierra su aplicación de esta manera y la reinicia después de un corto tiempo, es posible que su nueva aplicación se ejecute en el mismo proceso. Con todos los procesos no terminados y objetos singleton de la aplicación anterior.
Si quiere estar seguro de que su aplicación está cerrada, use System.exit (0);
Esto cerrará tu aplicación inmediatamente. Pero es posible que dañe los archivos que su aplicación ha abierto o que una edición en las preferencias compartidas no termine. Así que usa esto con cuidado.
Si usa watchdog en combinación con una tarea de larga duración, puede ver las influencias de los diferentes métodos.
Esto mata su aplicación después de 2 segundos sin mostrar un cuadro de diálogo ANR o algo así. Si elimina System.exit (0) , ejecute este código y reinicie la aplicación después de que se cierre, experimentará un comportamiento extraño, porque el bucle sin fin todavía se está ejecutando.
fuente
Debería usarlo mejor
finish()
si está dentroActivity
ogetActivity().finish()
si está en elFragment
.Si desea salir por completo de la aplicación, use:
fuente
Forma fácil y sencilla de salir de la aplicación
fuente
Queremos un código que sea robusto y simple. Esta solución funciona en dispositivos antiguos y dispositivos más nuevos.
fuente
Creo que lo que estás buscando es esto
fuente
fuente
Similar a @MobileMateo, pero en Kotlin
fuente
No estoy seguro de si esto está mal visto o no, pero así es como lo hago ...
Paso 1: generalmente tengo una clase que contiene métodos y variables a los que quiero acceder globalmente. En este ejemplo, lo llamaré la clase "Aplicación". Cree una variable de actividad estática dentro de la clase para cada actividad que tenga su aplicación. Luego, cree un método estático llamado "cerrar" que ejecutará el
finish()
método en cada una de esas variables de Actividad si NO son nulas . Si tiene una actividad principal / principal, ciérrela al final:Paso 2: en cada una de sus actividades, anule los métodos
onStart()
yonDestroy()
. EnonStart()
, establezca la variable estática en su clase de aplicación igual a "this
". EnonDestroy()
, póngalo igual anull
. Por ejemplo, en la clase "Actividad1":Paso 3 - Cuando quieras cerrar tu aplicación, simplemente llama
App.close()
desde cualquier lugar. ¡Todas las actividades instanciadas se cerrarán! Dado que solo está cerrando actividades y no está matando la aplicación en sí (como en sus ejemplos), Android es libre de hacerse cargo de allí y hacer cualquier limpieza necesaria.Nuevamente, no sé si esto estaría mal visto por alguna razón. Si es así, ¡me encantaría leer comentarios sobre por qué es y cómo se puede mejorar!
fuente
api>=16
usofinishAffinity()
, use este método.¿Salir de una aplicación está mal visto? . Ir a través de este enlace. Responde tu pregunta. El sistema hace el trabajo de matar una aplicación.
Suponga que tiene dos actividades A y B. Navega de A a B. Cuando hace clic en el botón Atrás, su actividad B aparece de la columna y se destruye. La actividad anterior en la actividad A de la pila posterior se enfoca.
Debe dejar que el sistema decida cuándo matar la aplicación.
vacío público
finish()
Llame a esto cuando termine su actividad y deba cerrarse.
Supongamos que tienes muchas actividades. puedes usar la barra de acción. Al hacer clic en el icono de inicio, navegue a MainActivity de su aplicación. En MainActivity, haga clic en el botón Atrás para salir de la aplicación.
fuente
Para salir de su aplicación, puede usar lo siguiente:
También para detener los servicios también llame al siguiente método:
fuente
Esto puede ser muy tarde y también según las pautas que se supone que no debes manejar el proceso del ciclo de vida por ti mismo (ya que el sistema operativo lo hace por ti). Una sugerencia sería que registre un receptor de transmisión en todas sus actividades con "
finish()
" en susonReceive()
y cuando quiera dejarlo, puede simplemente pasar una intención que indique que todas las actividades deben cerrarse ..... Aunque asegúrese de hacerlo " anule el registro "del receptor en susonDestroy()
métodos.fuente
No es una buena decisión, porque va en contra de los principios de procesamiento de aplicaciones de Android. Android no mata ningún proceso a menos que sea absolutamente inevitable. Esto ayuda a que las aplicaciones se inicien más rápido, porque siempre se mantienen en la memoria. Por lo tanto, necesita una razón muy especial para eliminar el proceso de su aplicación.
fuente
La solución correcta y exacta para salir de la aplicación al hacer clic en el botón es usar el siguiente código:
// Al presionar el botón Volver evento
fuente
Si está utilizando Kotlin, la forma correcta de salir de la aplicación y alternativa
System.exit()
es un método incorporadoVer la documentación .
Número
0
como parámetro significa que la salida está prevista y no se produjo ningún error.fuente
Esto matará cualquier cosa;)
fuente
Prueba esto
fuente
La forma más fácil que encontré para salir de una aplicación de una actividad, sin romper la lógica de Android y sin agregar más código en las actividades existentes y pasar extras es la siguiente:
el
QuitApplicationActivity
ser:fuente
La respuesta de @Sivi cierra la aplicación. Pero a cambio, si tiene algunas actividades secundarias, podría abrirse otra actividad inacabada. He añadido
noHistory:true
a mis actividades por lo que la aplicación de retorno se inicia desde MainActivity.fuente
Solo para agregar uno a la lista de métodos brutales para terminar una aplicación:
Process.sendSignal(Process.myPid(), Process.SIGNAL_KILL);
fuente
Process.killProcess(Process.myPid())
hace lo mismo, pero es más cortopuedes cerrar tus aplicaciones completas. así
Funcionará al 100%. ¡La mejor de las suertes!
fuente
Simplemente use el acabado () al presionar la tecla Atrás en Keypressed ()
fuente