如果我致电System.exit()
与killProcess()
,会有什么不同
我只对差异感兴趣
答案 0 :(得分:2)
我们应该使用什么?
答案 1 :(得分:2)
我不认为有任何区别。虽然使用System.exit(),但您应首先调用runFinalizersOnExit
答案 2 :(得分: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字节的内存。
答案 3 :(得分:0)
都不是。使用finish()。请参阅this和aromero建议的链接。让Android做它想要做的事情:管理你的活动生命周期。它是出于某种原因而设计的。