El método android finish () no borra la aplicación de la memoria

Tengo una actividad y llamo el método finish () y la actividad no se borra de la memoria.

Después de llamar a finish (), veo que el método onDestroy () se ejecuta correctamente (y borro todas mis variables y cosas allí).

¿Debe ser borrado de la memoria o de cómo funciona el android? Entiendo que el ciclo de vida de la actividad está terminado.

Y si mantiene la aplicación en la memoria para que se ejecute más rápido la segunda vez que el usuario lo utiliza, ¿qué tipo de objetos puedo dejar en la memoria para volver a usar? Si entiendo correctamente, se supone que debe borrar todo en onDestroy.

Android mantiene los procesos en caso de que el usuario quiera reiniciar la aplicación, esto hace que la fase de inicio sea más rápida. El proceso no hará nada y si la memoria necesita ser recuperada, el proceso será destruido. No te preocupes por eso

La mejor manera es usar finish() y después usar System.exit(0) para borrar variables estáticas. Le dará un poco de espacio libre.

Muchas aplicaciones dejan procesos de trabajo y variables lo que me hace enojar. Después de 30 minutos de uso de la memoria está llena y tengo que ejecutar Administrador de tareas – Lvl 2 borrar la memoria

No es cierto que es cousing problemas que he probado por más de 3 años en mis aplicaciones. Nunca se bloquee o reinicie después de usar Exit()

Intenta usar

System.exit (0);

Una vez que onDestroy () se llama, su actividad está condenada. Período.

Dicho esto, el proceso (y, por lo tanto, el espacio de direcciones) asignado a su aplicación aún puede estar en uso por otra parte de su aplicación: otra actividad o servicio. También es posible que su proceso está vacío y el sistema operativo simplemente no ha llegado a reclamar todavía; No es instantáneo.

Para obtener más información, consulte el documento Lifecycle del proceso:
http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle

Independientemente, si su actividad se relanza, tendrá que pasar por toda la secuencia de inicio de nuevo, comenzando con onCreate (). No asuma que algo puede ser implícitamente reutilizado.

Si necesitas cerrar la aplicación de la subactividad, puedo sugerirte que la hicieras de esta manera: 1) de la actividad Una actividad de llamada B como startActivityForResult (intención, REQUEST_CODE);

 Intent intent = new Intent() .setClass(ActivityA.this, ActivityB.class); startActivityForResult(intent, REQUEST_CODE); 

2) en la actividad A debe agregar el método:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE) { if (resultCode == RESULT_CLOSE_APPLICATION) { this.finish(); } } } 

3) en la actividad B:

 this.setResult(RESULT_CLOSE_APPLICATION); this.finish(); 

Como solución rápida, puedes usar la siguiente para matar tu aplicación:

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

Pero yo no recomendaría esto para aplicaciones comerciales porque va en contra de cómo funciona el sistema de gestión de memoria Android.

De acuerdo con esta presentación de Google I / O 2008, Finish también debería causar que el proceso sea eliminado, pero escribí una aplicación rápida para probar esto y en Android 1.5 no.

Como dijo Romain (que por cierto es un ingeniero de UI Toolkit para Android), su proceso sólo se quedará allí sin hacer nada de todos modos, por lo que no es nada de qué preocuparse.

  • La actividad de un proceso muerto sigue visible en la lista después de que presionó
  • Activación del flash de la cámara durante la grabación de vídeo
  • Cómo forzar a detener una aplicación de Android
  • ¿Es posible iniciar una Actividad como un nuevo proceso
  • Cada actividad en Android es un proceso o una aplicación es un proceso
  • Java.lang.Thread.setPriority vs android.os.Process.setThreadPriority
  • Aplicación de Android vs. Proceso
  • Acceso denegado (0x80004005) en Process.Start () en la aplicación android
  • Android: mantener vivo un servicio de fondo (prevenir la muerte del proceso)
  • Cuando su BroadcastReceiver se invoca a través de un Intent, ¿en qué proceso se ejecuta?
  • Android BroadcastReceiver: ejecutarlo en el proceso por defecto o en uno nuevo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.