2011-09-30 21 views

Respuesta

2

No creo que haya ninguna diferencia. aunque con System.exit(), debe llamar a runFinalizersOnExit primero

+2

'runFinalizersOnExit' no es seguro: http://developer.android.com/reference/java/lang/Runtime.html#runFinalizersOnExit(boolean) – Budda

2

¿Qué deberíamos usar?

Nadie, lea este Is quitting an application frowned upon?

+8

Deje que el desarrollador haga lo que va a hacer. Si hace un mal programa nadie lo usará o si no, estoy seguro de que el desarrollador está haciendo lo correcto. Simplemente no coloque un no respuestas a la pregunta, use comentarios en su lugar. – MinceMan

+1

Además, a veces no depende del desarrollador, pero alguien más alto que lo exige –

0

Ni. Use finish(). Ver this, y el enlace aromero recomendado. Deje que Android haga lo que debe hacer: administrar su ciclo de vida de actividad. Fue diseñado de esta manera por una razón.

2

Parece que System.exit() es tan bueno en todos los aspectos como kill, pero mucho más simple y menos dependiente de otras cosas.

Algunos han sugerido que se ejecute runFinalizersOnExit, pero de acuerdo con los documentos que se consideran inseguros y se eliminan a partir de 1.0, así que supongo que ignorar esa parte.

Al contrario de otras sugerencias, finish() no finaliza el proceso de Linux que ejecuta la aplicación y no libera toda la memoria utilizada por la aplicación.

Concedido, Android está diseñado para que en muchos casos no haya una necesidad particular de salir realmente de una aplicación (a cambio de una pequeña pausa más tarde, Android matará a sus aplicaciones antiguas cuando necesite su memoria); sin embargo, si Por alguna razón, quiero matar tu aplicación. System.exit() parece ser la forma ideal. Se apaga la máquina virtual Java que ejecuta su aplicación, por lo que todos los recursos, la memoria y los hilos se eliminarán por completo.

(Tenga en cuenta que puede especificar en su archivo de manifiesto que algunos subprocesos deben ejecutarse en diferentes procesos de Linux, en cuyo caso System.exit() probablemente solo elimine parte de su aplicación, pero eso es algo más avanzado)

De hecho, acabo de ejecutar adb shell ps|grep app y veo la aplicación de ejemplo com.example.android.lunarlander que no he ejecutado en aproximadamente una semana, todavía en la memoria, ocupando casi 100000 bytes de memoria .