Cómo matar a mi propia actividad – la manera dura

Así que tengo mi actividad, y al presionar un botón de "Salir" llamo Activity.finish (). Esto efectivamente cierra mi aplicación.

El problema: El proceso de Dalvik de mi aplicación sigue siendo alrededor como un zombi en segundo plano. Parece que esto es normal ya que otras aplicaciones hacen lo mismo. Incluso El ejemplo del hola-mundo cuelga alrededor en memoria.

Podría vivir con esto, pero unfortunatley este comportamiento hace el desarrollo de mi aplicación un dolor. Tengo un servicio remoto conectado a mi Actividad, y este servicio no se descargará hasta que mi Actividad se descargue (lo que como dije nunca lo hace).

Todo se mantiene de alguna manera vivo sin ninguna buena razón.

¿Cómo puedo realmente eliminar mi actividad de la memoria?

Estoy buscando algo como Activity.finish_and_kill_my_process_please () llamada o algo similar.

Así que tengo mi actividad, y al presionar un botón de "Salir" llamo Activity.finish (). Esto efectivamente cierra mi aplicación.

Por favor, no lo hagas .

El proceso de Dalvik de mi aplicación sigue siendo alrededor como un zombi en segundo plano.

El proceso se mantiene en un caché, para su posible reutilización por Android. Puede ignorarlo con seguridad.

Tengo un servicio remoto conectado a mi Actividad, y este servicio no se descargará hasta que mi Actividad se descargue (lo que como dije nunca lo hace).

Probablemente tenga un error en su aplicación, como llamar a startService() y no llamar a stopService() , o llamar a bindService() y no llamar a unbindService() .

  1. Terminación de llamada (); en el botón de clic
  2. Añada esta línea al método onDestroy:

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

  public void onDestroy() { super.onDestroy(); android.os.Process.killProcess(android.os.Process.myPid()); } 

Intente usar el método killBackgroundProcesses :

 ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); activityManager.killBackgroundProcesses("name.of.your.package"); 

Deberá agregar el permiso KILL_BACKGROUND_PROCESSES al archivo AndroidManifest.xml .

Bueno, si no sólo la actividad, sino también la aplicación que desea terminar, puede utilizar

System.exit(0)

La gente dice que es un ejemplo obsoleto o malo, pero, bueno, es Java puro y funciona …

Al matar el proceso se puede detener la aplicación completamente. Desde la última pantalla en la pulsación de botón de nuevo puede matar el proceso por:

 public void onBackPressed() { super.onBackPressed(); int pid = android.os.Process.myPid(); android.os.Process.killProcess(pid); } 

Similar a System.exit (0) en el lado de Java, también puede llamar a un método nativo durante onDestroy que llama a exit (0) en el lado de C / C ++. Esto parece obligar a lib a salir completamente. ¡Está funcionando para mí!

Mediante el uso de ActivityManager podemos cerrar las otras aplicaciones también.

 private ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); am.restartPackage("com.jimmy.appToBeClosed"); 

para usar el código anterior debe tener los permisos de android.permission.RESTART_PACKAGE en el archivo de manifiesto.

System.exit () descarga instantáneamente toda la máquina virtual con todas las bibliotecas nativas, servicios y etc.

  • El método android finish () no borra la aplicación de la memoria
  • ¿Cómo puede una aplicación de Android tener más de un proceso?
  • El nombre de aplicación de PackageManager siempre es nulo
  • Runtime.exec () error: se bloquea sin proporcionar un objeto de proceso
  • Android: El proceso secundario (logcat) continúa ejecutándose después de que el proceso padre (aplicación) falleció
  • ¿Las aplicaciones que utilizan varios procesos comparten una instancia de Dalvik?
  • Cada actividad en Android es un proceso o una aplicación es un proceso
  • La vinculación al servicio que ya fue iniciada por BroadcastReceiver crea una nueva instancia de servicio
  • Cualquier manera de comprobar si un proceso en ejecución es un proceso del sistema en android
  • ¿Los fragmentos con setRetainInstance (true) sobreviven al cierre del proceso?
  • ¿Es posible iniciar una Actividad como un nuevo proceso
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.