`
yangguangfu
  • 浏览: 1538919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android中调用System.exit(0)

 
阅读更多

public class HelloGoodbye{

try{

System.out.println(“Hello World”);

System.exit(0);

} finally {

System.out.println(“Goodbye World”);

}}

上面这段代码会打印出什么呢?要知道答案需要了解System.exit(0)这个方法在执行过程中到底发生了哪些事情。API文档上描述System.exit方法会导致当前运行线程停止并使其它线程都终止,因此上面这段代码中的finally代码块不会被执行。

进一步探索System.exit被调用后的行为,它在虚拟机在退出前会执行两个清除任务。第一,它会执行所有通过Runtime.addShutdownHook注册的shutdown hooks.它能有效的释放JVM之外的资源。第二,执行清除任务,运行相关的finalizer方法终结对象。

如果需要在调用System.exit方法后仍然打印出“Goodbye World”,可采用如下的方法:

System.out.println(“Hello World”);

Runtime.getRuntime().addShutdownHook(

new Thread(){

public void run(){

System.out.println(“Goodbye world”);

}

}

)
System.exit(0);

在Tomcat的源代码中也有用到shutdownHook,保证了Tomcat在运行时,收到Ctrl+c命令终止JVM进程时,能够正确退出。

System.exit(0)和System.exit(1)区别:

 System.exit(0)是将你的整个虚拟机里的内容都停掉了,而finish()只是退出了activity,并没有退出应 用,Application还是存在于内存中的,除非被系统回收。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西。关 于finished与System.out的区别,请参考:http://blog.sina.com.cn/s/blog_48e2ea3401017m3f.html


System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序
System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点:return是回到上一层,而System.exit(status)是回到最上层

分享到:
评论

相关推荐

    怎样完全退出android程序

    在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序...

    基于Android的完全退出程序的方法.zip

    对于完全退出应用,我们需要在适当的时候调用System.exit(0)来结束进程。 其次,让我们看看几种常见的退出应用的方法: 1. **利用Activity的finish()方法**:当用户按下Back键或者调用finish()时,当前Activity会...

    exit结束activity

    描述中提到的"exit"通常指的是强制退出整个应用程序,这通常是通过调用`System.exit(0)`来实现的。这种方法会立即结束应用程序进程,不再执行任何Java代码,包括没有被清理的资源。与`finish()`不同,`System.exit...

    android 如何完全退出程序

    在Android中,单纯调用`System.exit(0)`或`android.os.Process.killProcess(android.os.Process.myPid())`并不能确保应用程序中的所有Activity都被完全关闭,尤其是当应用程序中有多个Activity栈存在时。这种情况下...

    Android 完全退出当前应用程序的四种方法

    首先获取当前进程的PID(Process ID),然后使用`killProcess()`方法杀死进程,最后使用`System.exit(0)`确保Java虚拟机正常关闭。这种方法虽然直接,但可能会影响其他正在运行的组件和服务。 ```java android.os...

    利用Android两行代码真正杀死你的App

    总之,正确地关闭Android App并不仅仅是调用`System.exit(0)`或`Process.killProcess(Process.myPid())`那么简单。要真正杀死App,需要确保关闭所有Activity,然后再结束进程。不过,作为开发者,我们应该谨慎使用...

    Android 实现彻底退出自己APP 并杀掉所有相关的进程

    System.exit() 是 Java 中结束进程的方法,调用它将关闭当前的 JVM 虚拟机。例如: ```java System.exit(0); ``` 这将正常退出应用程序。System.exit() 方法可以带有参数,0 表示正常退出,非 0 表示非正常退出。...

    如何完全退出程序

    通常,开发者会尝试使用`finish()`、`System.exit(0)`或`android.os.Process.killProcess(android.os.Process.myPid())`等方法来关闭应用,但这些方法往往只能结束当前活动的Activity,而无法彻底关闭整个应用,因为...

    Android完全退出应用程序的方法

    在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用...

    分析如何安全退出多个Activity 多种方式

    在Android应用开发中,正确管理和安全退出多个Activity是至关重要的,因为这直接影响到用户体验和应用的性能。本文将深入探讨几种常见的方法来实现这一目标,同时确保应用在退出时资源得到妥善释放,避免内存泄漏等...

    android安卓app如何彻底结束进程. 光调用finish()是结束不了程序的,程序中的线程依旧在后台运行.zip

    使用`System.exit(0)`可以强制退出应用程序,这会结束当前进程。但是,这种方法不推荐使用,因为它破坏了Android的生命周期管理,可能导致数据丢失和用户体验下降。 2. **杀死所有活动**: 通过遍历`...

    android完美退出app的实例代码.pdf

    这将遍历并结束列表中的所有Activity,然后调用`onDestroy()`释放资源,并使用`System.exit(0)`结束进程。 ```java // 假设在某个地方需要退出App ((AgentApplication) getApplication()).exitApp(); ``` 这种实现...

    Android中一键退出应用程序

    2. 结束应用进程:更直接的方法是调用System.exit(0)来强制结束应用进程,但这并不推荐,因为它可能影响系统的正常内存管理。如果确实需要,可以这样实现: ```java public void exitApp() { ActivityManager ...

    退出整个应用程序

    当需要退出时,遍历该列表并调用每个Activity的`finish()`方法来关闭它们,并最终调用`System.exit(0)`来结束进程。 #### 代码详解 ##### SysApplication 类 ```java public class SysApplication extends ...

    Android强行结束APP进程的方法.zip

    首先创建一个BroadcastReceiver,并在接收到特定广播时调用System.exit(0)方法。注册BroadcastReceiver可以在AndroidManifest.xml中进行,也可以在代码中动态注册。但需要注意的是,System.exit()并不是最佳实践,...

    Android退出应用测试

    这时,可以在相应按钮的点击事件中调用System.exit(0)或finishAffinity()来实现。 4. **System.exit(0)**: 这个方法会立即终止当前进程,结束所有关联的Activity,但不保证执行onDestroy()。使用此方法需谨慎,...

    Android 应用程序多Activity跳转之后退出整个程序

    1. **使用System.exit(0)**: 这是最直接的方式,通过调用`System.exit(0)`方法可以立即终止应用程序。然而,这种方式并不推荐,因为它不遵循Android的生命周期管理,可能导致资源未被正确释放,同时可能影响其他组件...

    Android高级应用源码-返回键退出程序的两种方式.zip

    - 在每个Activity的`onBackPressed()`方法中,检查当前Activity是否为栈顶元素,如果是,则调用`AppManager`的退出方法,这个方法会遍历栈并逐个`finish()`所有Activity,最后调用`System.exit(0)`。 2. **监听...

    Android期末复习题总结.doc

    13. 退出 Activity 错误的方法是 System.exit( ); 14. 当启动一个 Activity 并且新的 Activity 执行完后需要返回到启动它的 Activity 来执行的回调函数是 onActivityResult()。 15. 这个 shape 文件是画一条虚线,...

    安卓Android源码——返回键退出程序的两种方式.zip

    通过注册广播接收器(BroadcastReceiver),当接收到特定的系统广播(如ACTION_ACTIVITY_PAUSED)时,可以判断是否是最后一个活动被暂停,如果是,则调用System.exit(0)强制退出程序。这种方法需要更复杂的代码结构...

Global site tag (gtag.js) - Google Analytics