博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !
关闭所有Activity有以下几种方法:
1、Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);// 必须,没有这个你可以看看效果~
currentActivity.startActivity(startMain);
System.exit(0);// 关键,如果换成 finish()效果表面一样,但实际并无关进程,0代表正常关闭。
2、<uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>
ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
这个方法,系统会将,该包下的 ,所有 进程,服务,全部杀掉。
getPackageManager().clearPackagePreferredActivities("packageName");
同时,结合这条语句使用。
3、这两种方法也可以结合使用。
- android.os.Process.killProcess(android.os.Process.myPid()) //获取PID
- Intent intent = new Intent();
- intent.setClass(Android123.this, CWJ.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置
- startActivity(intent);
// 当正在运行的线程都是守护线程时,Java 虚拟机退出。该方法必须在启动线程前调用。
4、
ExitApplication.getInstance().addActivity(this);
//单例模式中获取唯一的ExitApplication实例 public static ExitApplication getInstance(){ if(null == instance){ instance = new ExitApplication(); } return instance; }
//添加Activity到容器中 public void addActivity(Activity activity){ activityList.add(activity); } //遍历所有Activity并finish public void exit(){ for(Activity activity:activityList){ activity.finish(); } System.exit(0); }
5、见一同事的退出方法
// 返回按鈕
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
new AlertDialog.Builder(CalendarActivity.this)
.setTitle("提示")
.setMessage("确定退出程序吗?")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// 退出程序(杀死进程)
Intent intent = new Intent(
Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
android.os.Process.killProcess(which);
}
}).setNegativeButton("取消", null).show();
return true;
}
return super.onKeyDown(keyCode, event);
}