¿Cómo salir de una aplicación de Android usando código?

Estoy seguro de que esta pregunta se me ha hecho varias veces porque leo pocas. Mi cliente quiere que ponga un botón en su aplicación donde los usuarios pueden hacer clic y salir. He leído esto y he encontrado que llamar a finish() lo hará. Pero, finalizar solo está cerrando la actividad de ejecución actual ¿verdad? Tengo muchas actividades, así que en este caso tengo que pasar la instancia de cada actividad y terminarlas o convertir cada actividad en un patrón de Singleton.

También llegué a saber que Activity.moveTaskToBack(true) puede llevarte a la pantalla de inicio. De acuerdo, esto no se está cerrando, pero da la imagen de fondo del proceso. Entonces, ¿esto es efectivo?

¿Qué método debo usar para cerrar la aplicación COMPLETAMENTE? Cualquiera de los métodos descritos anteriormente o cualquier otro método / otro uso de los métodos anteriores?

Por favor ayuda.

En realidad, todos buscan cerrar la aplicación en un evento onclick, donde sea que haya actividad ….

Así que chicos amigos prueban este código. Ponga este código en el evento onclick

 Intent homeIntent = new Intent(Intent.ACTION_MAIN); homeIntent.addCategory( Intent.CATEGORY_HOME ); homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(homeIntent); 

Puede llamar a System.exit (); para salir de todas las actividades.

  submit=(Button)findViewById(R.id.submit); submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } }); 

Si desea salir de su aplicación, use este código dentro de su evento presionada con el botón:

 public void onBackPressed() { moveTaskToBack(true); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } 
  @Override public void onBackPressed() { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); alertDialogBuilder.setTitle("Exit Application?"); alertDialogBuilder .setMessage("Click yes to exit!") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { moveTaskToBack(true); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show(); } 

Es demasiado fácil. Use System.exit(0);

Hay dos situaciones posibles:

  1. Es posible que desee salir de la actividad
  2. O quieres salir de la aplicación

Puede salir de la actividad usando el siguiente código:

 var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryHome); intent.SetFlags(ActivityFlags.NewTask); startActivity(intent); finish(); 

Pero esto no matará las actividades subyacentes en la misma aplicación. Esto solo minimizará la aplicación.

Si desea salir de la aplicación, use el siguiente código para finalizar su proceso:

 android.os.Process.killProcess(android.os.Process.myPid()); 

para el desarrollo mono solo uso

 process.KillProcess(Process.MyPid()); 
 android.os.Process.killProcess(android.os.Process.myPid()); 

¿Qué tal this.finishAffinity()

De los documentos,

Finalice esta actividad, así como todas las actividades inmediatamente debajo de ella en la tarea actual que tengan la misma afinidad. Esto se usa generalmente cuando una aplicación puede iniciarse en otra tarea (como desde un ACTION_VIEW de un tipo de contenido que entiende) y el usuario ha utilizado la navegación hacia arriba para cambiar de la tarea actual a su propia tarea. En este caso, si el usuario ha navegado hacia abajo en cualquier otra actividad de la segunda aplicación, todas deben eliminarse de la tarea original como parte del cambio de tarea. Tenga en cuenta que este acabado no le permite entregar resultados a la actividad anterior, y se lanzará una excepción si está tratando de hacerlo.

  @Override public void onBackPressed() { Intent homeIntent = new Intent(Intent.ACTION_MAIN); homeIntent.addCategory( Intent.CATEGORY_HOME ); homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(homeIntent); } 

Desde la 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 de javadoc:

 this.finishAffinity(); 

Finalice esta actividad, así como todas las actividades inmediatamente debajo de ella en la tarea actual que tengan la misma afinidad. Esto se usa generalmente cuando una aplicación puede iniciarse en otra tarea (como desde un ACTION_VIEW de un tipo de contenido que entiende) y el usuario ha utilizado la navegación hacia arriba para cambiar de la tarea actual a su propia tarea. En este caso, si el usuario ha navegado hacia abajo en cualquier otra actividad de la segunda aplicación, todas deben eliminarse de la tarea original como parte del cambio de tarea.

Tenga en cuenta que este acabado no le permite entregar resultados a la actividad anterior, y se lanzará una excepción si está tratando de hacerlo.

Desde la API 21 puedes usar un comando muy similar

 finishAndRemoveTask(); 

Finaliza todas las actividades en esta tarea y lo elimina de la lista de tareas recientes.

Alternativas:

 getActivity().finish(); System.exit(0); 

 int pid = android.os.Process.myPid(); android.os.Process.killProcess(pid); 

 Intent i = new Intent(context, LoginActivity.class); i.putExtra(EXTRA_EXIT, true); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(i); 

Fuente: cómo salir de la aplicación de Android programáticamente

¡Espero eso ayude! ¡Buena suerte!

Use this.finishAffinity (); en ese botón en lugar de terminar (); Si no funciona, también puedes intentar agregando android: noHistory = “true” en tu manifiesto y luego terminar tu actividad terminando uisng (); o finishAffinity ();

Espero eso ayude….:)

Pruebe esto en una llamada. A veces lo uso en el clic de un botón.

 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); 

En lugar de cerrar su aplicación, abre el tablero de modo que parece que su aplicación está cerrada.

lea esta pregunta para obtener más claridad android – exit application code

esto borrará Tarea (stack de actividades) y comenzará una tarea nueva.

 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); System.exit(1); 

actividad fantasma llamada con singletop y finish () en onCreate debería hacer el truco

pon esto en tu onClic:

 moveTaskToBack(true); finish() 

Funciona usando solo moveTaskToBack(true);

Logrando en Xamarin.Android:

  public override void OnBackPressed() { MoveTaskToBack(true); Process.KillProcess(Process.MyPid()); Environment.Exit(1); } 

solo usa el código en tu backpress

  Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain); 

Si está utilizando EventBus (o realmente cualquier otra biblioteca de pub / sub) en su aplicación para comunicarse entre actividades, puede enviarles un evento explícito:

 final public class KillItWithFireEvent { public KillItWithFireEvent() {} public static void send() { EventBus.getDefault().post(new KillItWithFireEvent()); } } 

El único inconveniente de esto es que necesita todas las actividades para escuchar este evento para llamar a su propio finish() . Para esto, puedes crear fácilmente clases de actividad shim a través de la herencia que solo escuchan este evento y permiten que las subclases implementen todo lo demás, luego asegúrate de que todas tus actividades hereden de esta capa adicional. Los oyentes de muerte incluso podrían agregar alguna funcionalidad extra a través de anulaciones, como evitar la muerte en ciertas situaciones particulares.

Si usa tanto finalizar como salir, su aplicación se cerrará de forma compleja

terminar();

System.exit (0);

En lugar de System.exit (1) simplemente use System.exit (0)

Simplemente ejecute las dos líneas siguientes cuando desee salir de la aplicación

 android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); 
    Intereting Posts