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í).
- ¿Las aplicaciones que utilizan varios procesos comparten una instancia de Dalvik?
- Cómo leer la salida del comando de proceso android
- Android - ¿Cómo decidir si ejecutar un servicio en un proceso separado?
- La notificación sigue en la barra después de matar al servicio
- El nombre de aplicación de PackageManager siempre es nulo
¿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.
- ¿Cómo matar un proceso?
- Android proceso asesino
- Android obtener el nombre del proceso dentro de BroadcastReceiver
- ¿Cómo ejecutar una aplicación Qt en segundo plano en Android?
- Servicio de Android: proceso vs. no
- ¿Cómo puedo abrir un Fragmento de Android en un nuevo proceso?
- ¿Los fragmentos con setRetainInstance (true) sobreviven al cierre del proceso?
- La aplicación de Android no se cierra después de llamar a System.exit (0)
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.