¿Cómo forzar a detener mi aplicación de Android programáticamente?

Me gustaría obligar a detener mi aplicación de Android cuando hago clic en Cerrar botón. Este es mi código

protected void onCreate(Bundle savedInstanceState) { this.setContentView(R.layout.layoutxml); this.closeButton = (Button)this.findViewById(R.id.close); this.closeButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } 

Esto termina mi aplicación. Si voy a Settings -> Applications -> Manage applications -> , puedo ver que el botón ‘Forzar detención’ está habilitado. ¿Esto significa que mi aplicación no se detuvo por completo?

¿Cómo puedo terminar mi aplicación Android por completo y desactivar el botón “Forzar detención” en la “Configuración”? Desde mi experiencia limitada, cuando ocurre una ‘Excepción’ (por ejemplo, NullPointerException) en la aplicación, se detiene anormalmente, parece que terminó por completo, y el botón ‘Forzar detención’ parece deshabilitado.

Otra forma es

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

No creo que sea tan malo hacer esto, siempre que pongas esas llamadas en onDestroy() . (Si matas tu proceso en el medio del manejo del evento, pueden ocurrir todo tipo de cosas malas, como el enfoque táctil en el éter).

Sin embargo, necesita una razón convincente para desviarse de las mejores prácticas, que es simplemente llamar a finish() y dejar que el sistema operativo se encargue de eliminar su proceso cuando lo necesite.

Nota: Esto no mata a toda la aplicación, pero si lo que desea hacer es finalizar todas las actividades de la aplicación, esta es la mejor opción.

Android ≥ 16

finishAffinity();

Android <16

ActivityCompat.finishAffinity(Activity activity)

Espero que esto ayude

Una mala forma de matar la aplicación sería System.exit(0)

Editar: creo que debo alguna explicación. Android maneja el ciclo de vida de la aplicación por sí mismo, y se supone que no debes ‘ForceClose’, y no conozco ninguna buena manera de hacerlo. En general, está bien si su aplicación todavía está activa en segundo plano, de esta manera, si el usuario la inicia nuevamente, aparecerá rápidamente.

Pruebe este código para forzar a detener su aplicación …

 private void QuitApplication(){ int pid = android.os.Process.myPid(); android.os.Process.killProcess(pid); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); } 

Feliz encoding …

¿Por qué no hacer una Shell-Call para ActivityManager?

 try { Runtime.getRuntime().exec("am force-stop com.me.myapp"); } catch (IOException e) { e.printStackTrace(); }