安卓中的System.exit等效方法是什么?

3
我知道这个调用不应该被执行,但目前它是唯一可以快速停止活动的方式。基本上,在从后台返回应用程序(或使用DDMS的"终止应用程序"按钮)后,一些静态变量为空。我想重新启动活动以防止崩溃,并更新所有值。目前,System.exit(0)已经做到了我想要的效果,但我知道这样做不好。
我尝试过finish(),但它不能够立即停止活动,它会继续执行某些指令,导致崩溃。
你们有没有任何建议来解决这个问题?

3
基本上,从后台返回应用程序(或使用DDMS的“终止应用程序”按钮)后,一些静态变量会变成null,这是因为您的进程被终止了。您需要将所有static字段视为缓存,并处于延迟初始化的位置。 - CommonsWare
请查看:https://developer.android.com/reference/android/app/Activity.html#finish() - Lifka
3个回答

2

只有在Android API 21及以上版本中,您才能使用 > 符号。

getActivity().finishAndRemoveTask(); 

完成此任务中的所有活动,并将其从最近的任务列表中移除。

它可以像System.exit(0)一样快速停止应用程序。但是它是否比System.exit(0)更好?我不知道...

------------------ 编辑 ---------------------

在下面的问题中

如何以编程方式退出android应用程序?

您可以看到各种停止应用程序的方法。


它比android.os.Process.killProcess更好吗? - IgorGanapolsky

2

关闭正在运行的Android应用程序的标准方法很简单:

finish();

更复杂的方法如下所示:

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

终止进程也可以运行,但我觉得它像 System.exit 一样很不干净。谢谢。 - Leonardo Hernandez
1
finish() 只销毁 Activity,不会 销毁 Application 上下文。 - IgorGanapolsky

1
根据Activity.finish()的文档:
调用此方法当您的activity完成并应该关闭。ActivityResult将通过onActivityResult()返回给启动您的人。
当您调用System.exit()时,实际上是终止JVM;通过完成activity,您允许Android JVM进行清理工作。

finish()方法无法“快速地”停止活动,它仍然执行一些指令,导致崩溃。但还是谢谢。 - Leonardo Hernandez
1
那么我认为您需要重写 onPause 并关闭任何仍在运行的线程?还有哪些指令正在运行?您试图从哪里调用它?这些细节应该添加到您的帖子正文中。 - Matt Clark

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