博客出自: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); }