System.exit()和killProcess()的区别

7
如果我调用System.exit()killProcess()有什么不同?我只对它们之间的区别感兴趣。
4个回答

2
看起来System.exit()在所有方面都和kill一样好,但更简单,而且不太依赖其他东西。
有人建议设置runFinalizersOnExit,但根据文档,这被认为是不安全的,并且自1.0版本以来已逐步淘汰 - 所以我想忽略那部分内容。
与其他建议相反,finish()并不会结束运行应用程序的Linux进程,并且不会释放应用程序使用的所有内存。
可以肯定的是,Android的设计使得对于许多情况,实际上没有必要退出应用程序(代价是稍后会有轻微的暂停,当需要它们的内存时,Android将杀死旧的应用程序) - 但是,如果您出于任何原因想要终止您的应用程序,则System.exit()似乎是理想的方式。它关闭正在运行您的应用程序的Java虚拟机 - 因此,所有资源,内存和线程都将完全刷新。
(请注意,您可以在清单文件中指定某些线程应在不同的Linux进程中运行 - 在这种情况下,System.exit()可能只会杀死您的应用程序的一部分 - 但这是更高级的内容。)
事实上,我刚刚运行了adb shell ps|grep app,我看到com.example.android.lunarlander示例应用程序,我大约一周没有运行它了 - 仍然在内存中,仍然占用将近100000字节的内存。

2

9
让开发者做他该做的事情。如果他制作了一个糟糕的程序,没有人会使用它,否则我相信开发者正在做正确的事情。只是不要在回答问题时提供无关紧要的答案,应该使用注释。 - MinceMan
1
有时候,这并不是开发人员的决定,而是上级要求。 - Joe Plante

2

我认为两者没有区别,尽管在使用System.exit()时,你应该先调用runFinalizersOnExit方法。


2
"runFinalizersOnExit" 不安全:http://developer.android.com/reference/java/lang/Runtime.html#runFinalizersOnExit(boolean) - Budda

0
不要使用finish()。请参考this和aromero推荐的链接。让Android做它应该做的事情:管理您的活动生命周期。它是出于某种原因而设计的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接