Android之退出系统
1、以前做退出系统功能的时候大概是这么来做的:
自己定义一个Ativity栈,然后每创建一个activity就会将当前创建的activity添加到当前的activity栈中,在退出的时候就finish自己栈中的所有activity。使用如下:
(1)Activity栈:
public class ActivityUtil {
//静态Activity集合
private static List<Activity> acts = new ArrayList<Activity>();
private static List<Activity> allActs = new ArrayList<Activity>();
//添加方法
public static void addActs(Activity act) {
if (!acts.contains(act))
acts.add(act);
}
//关闭方法
public static void closeActs() {
for (int i = 0; i < acts.size(); i++) {
acts.get(i).finish();
}
acts.clear();
}
//添加方法
public static void recordActs(Activity act) {
if (!allActs.contains(act))
allActs.add(act);
}
//关闭方法
public static void exit() {
for (int i = 0; i < allActs.size(); i++) {
allActs.get(i).finish();
}
}
}
(2)当创建activity的时候:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityUtil.addActs(this);
setContentView(R.layout.XXX);
(3)当退出系统的时候:
ActivityUtil. closeActs()
但是后来发现这个方法在activity中存在静态变量的时候,会导致内存溢出,而且随着系统流程的进行,打开的activity变多的时候,会占用很多内存,不可取。所以在网上找了一下,发现一个比较不错的方法,如下:
2、Dalvik VM的本地方法
android.os.Process.killProcess(android.os.Process.myPid()) //获取PID
System.exit(0); //常规java、c#的标准退出法,返回值为0代表正常退出
这个是退出当前进程的方法,直径退出当前进程,不占用什么内存,也不用担心内存溢出。
3、网上还有一个说是任务管理器的方法大体描述如下:
首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
系统会将,该包下的 ,所有进程,服务,全部杀掉,就可以杀干净了,要注意加上
<uses-permission android:name=\"android.permission.RESTART_PACKAGES\"></uses-permission>
但是经测试,这个方法在一些手机上不管用,有待研究。
个人感觉方法2最实用。