android中finish(),exit()的区别

一个Activity是有生命周期的,onCreate,onStart,onResume,onPause,onStop,onDestroy...

finish是Activity的类,仅仅针对Activity,当调用finish()时,只是将活动推向后台,并没有立即释放内存,活动的资源并没有被清理;当调用System.exit(0)时,杀死了整个进程,这时候活动所占的资源也会被释放。

其实android的机制决定了用户无法完全退出应用,当你的application最长时间没有被用过的时候,android自身会决定将application关闭了。

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

Process.killProcess 最终是调用 linux API kill() 发送 SIGKILL 信号。了解 Linux 编程的都知道,进行收到这个信息都会立即结束进程,Android 下不同的是 ActivityManager 一直监听者进程状态。如果发现进程被kill,会立即重启进行,并重启之前状态对应的Activity、Service、ContentProvider等。这就是为什么我们调用Process.killProcess后,发现程序是重启了,而不是被kill了

你可能感兴趣的:(Activity,exit,finish,System.exit0)