Android进阶之关闭所有activty

博客出自: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、这两种方法也可以结合使用。

  1. android.os.Process.killProcess(android.os.Process.myPid())    //获取PID  

  1. Intent intent = new Intent();   
  2. intent.setClass(Android123.this, CWJ.class);   
  3. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG设置  
  4. startActivity(intent);  
重要知识点:writeThread.setDaemon(true);// 将该线程标记为守护线程或用户线程。

// 当正在运行的线程都是守护线程时,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);
	}


原文地址:https://www.cnblogs.com/fengju/p/6174518.html