Android两种杀掉进程方式总结(System.exit()和Process.killProcess())
2016-03-04 16:06
381 查看
Android上杀掉进程的方式有两种,分别是System.exit(0)和Process.killProcess(Process.myPid()),那么这两种方式有何区别呢?
在执行完这两种方式之后,APP进程都会消失。
Process.killProcess(Process.myPid())会杀掉所有PID一样的进程,比如那些拥有相同UID的应用,统统都会被杀掉。
Process.killProcess(Process.myPid()) 是通过PID去杀死进程。
0:代表成功的信号;
1:代表失败的信号,常用于捕获到异常执行。
真要用的话,也得注意:如果程序有多个Activity,最好在主Activity中的OnBackPressed()中使用,如果在其它Activity中使用的话,APP会直接退出,退出后会重启应用,这样对于用户体验不是很好。
相同点
APP进程都会被直接杀掉
我们通过adb shell ps可以查看当前手机所有运行的进程状态,在执行完这两种方式之后,APP进程都会消失。
生命周期都不会被调用
onPause()、onStop()和onDestory(),也包括onSaveInstanceState,这些生命周期方法都不会被调用。不同点
影响范围不同
System.exit(0)只会影响当前的程序;Process.killProcess(Process.myPid())会杀掉所有PID一样的进程,比如那些拥有相同UID的应用,统统都会被杀掉。
方式不一样
System.exit(0)是停止程序的虚拟机;Process.killProcess(Process.myPid()) 是通过PID去杀死进程。
补充
System.exit(0)和System.exit(1)
看官方的方法注释,如下:Use 0 to signal success to the calling process and 1 to signal failure.
0:代表成功的信号;
1:代表失败的信号,常用于捕获到异常执行。
使用方式
从上面可以看出,这两种方式都比较暴力,不推荐使用,尤其是现在的手机配置都很好的情况下。而且进程都被杀掉了,相应的Service也会被干掉,如果存在推送的话,会出现各种莫名的问题。真要用的话,也得注意:如果程序有多个Activity,最好在主Activity中的OnBackPressed()中使用,如果在其它Activity中使用的话,APP会直接退出,退出后会重启应用,这样对于用户体验不是很好。
相关文章推荐
- Android之 ListActivity 的使用和在 ListView中添加图片文字
- Android Studio 优秀插件(一):GsonFormat
- 桌面虚拟化传输协议之android spice及spice源码分析之server(1)
- TextView/EditText各种各样的效果
- Android:30分钟弄明白Touch事件分发机制
- 初试Android基于Vuforia开发AR
- Android 流量分析API
- Android中 android:layout_weight 属性 完美解释
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- 待实验:Android 增量升级
- Android安全专项-Xposed劫持用户名密码实践
- android开发环境搭建(Studio版)
- Android事件分发机制(下)
- Android邮件发送详解 .
- android开发使用的工具类
- 【Android】sendMessage与sendEmptyMessage的异同
- 今天运行Android studio模拟器时提示出现错误
- Android_什么是【回调】
- Android Studio 快捷键
- Android Binder IPC详解-Android学习之旅(96)