如何让android退出应用?

如何让android退出应用?

1、android.os.Process.killProcess(pid)

只能终止本程序的进程,无法终止其它的。android中所有的activity都在主进程中,在Androidmanifest.xml中可以设置成启动不同进程,Service不是一个单独的进程也不是一个线程。
当你Kill掉当前程序的进程时也就是说整个程序的所有线程都会结束,Service也会停止,整个程序完全退出。

public static final void killProcess (int pid)

Kill the process with the given PID. Note that, though this API allows us to request to kill any process based on its PID, the kernel will still impose standard restrictions on which PIDs you are actually able to kill. Typically this means only the process running the caller's packages/application and any additional processes created by that app; packages sharing a common UID will also be able to kill each other's processes.

具体代码如下:

 

Process.killProcess(Process.myPid());

 

2、System.exit(int code)

例如: System.exit(0);

该方法只能用于结束当前进程自身,在程序遇到异常,无法正常执行时,可以 通过这个方法强制退出。

当我们在写java程序时肯定用到过System.exit(0),它的意思是退出JVM(java虚拟机),在android中一样可以用,我们可以想像一下虚拟机都退出了当然执行System.exit的程序会完全退出,内存被释放。

注意:在android手机中查看当前正在运行的进程时可以发现还可以查看"后台缓存的进程",你会发现很多退出了的程序还在后台缓存的进程中,如果不要让程序在后台缓存那么就可以用System.exit(0);来退出程序了,可以清除后台缓存的本进程。

System.exit(0),System.exit(1)的区别:

参数0和1代表退出的状态,0表示正常退出,1表示异常退出(只要是非0的都为异常退出),即使不传0来执行也可以退出,该参数只是通知操作系统该程序是否是正常退出。

需要注意的是: android.os.Process.killProcess(pid) 和 System.exit(int code)会导致进程非正常退出,进程退出时不会去执行Activity的onPause、onStop和onDestroy方法,那么进程很有可能错过了保存数据的机会。因此,这两个方法最好使用在出现异常的时候!大家需要注意其使用方法。

3、killBackgroundProcesses()

manager.killBackgroundProcesses(getPackageName());

使用示例代码如下:

 

ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);  
manager.killBackgroundProcesses(getPackageName());
//需要在xml中加入权限声明  
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
在android2.2以后,如果服务在ondestroy里加上了start自己,用kill backgroudprocess通常无法结束自己。

 

4、利用linux的kill -9命令

5、在Application中单例一个collection容器,activity启动的时候添加进去,退出应用的时候遍历finish。

参考:


1、http://www.cnblogs.com/hanyonglu/archive/2012/04/12/2443262.html
2、http://www.cnblogs.com/homg/p/3346757.html