安卓一键退出APP

  • Post author:
  • Post category:其他




安卓一键退出App



1、安卓退出程序有几种方法

首先要实现两个步骤

  1. 退出当前所有的activity
  2. 结束当前APP的进程



2、怎么退出所有的Activity

百度找了很多的资源,网上使用的方法有很多中,我使用的是每当Activity创建的时候,都会进入一个工具栈内,进行存储

下面就来介绍怎么使用


步骤一:所有的Activity都要继承一个BaseActivity(名字自己取啦)


在这里插入图片描述


步骤二:写一个工具类,来管理Activity


在这里插入图片描述


工具类代码:

public class ScreenManagerUtil
{
	private static Stack<Activity> activityStack;
	private static ScreenManagerUtil instance;
	private ScreenManagerUtil(){
	}
	public static ScreenManagerUtil getScreenManager(){
		if(instance==null){
			instance=new ScreenManagerUtil();
		}
		return instance;
	}
	//退出栈顶Activity
	public void popActivity(Activity activity){
		if(activity!=null){
//			activity.finish();
			activityStack.remove(activity);
			activity=null;
		}
	}

	//获得当前栈顶Activity
	public Activity currentActivity(){
		if(activityStack == null ||activityStack.empty()) {
			return null;
		}
		return activityStack.lastElement();
	}

	//将当前Activity推入栈中
	public void pushActivity(Activity activity){
		if(activityStack==null){
			activityStack=new Stack<Activity>();
		}
		activityStack.add(activity);
	}
	//依次退出到 某 个 Activity
	public void popAllActivityExceptOne(Class cls){
		while(true){
			Activity activity=currentActivity();
			if(activity==null){
				break;
			}
			if(activity.getClass().gequals(cls) ){
				break;
			}
			activity.finish();
		}
	}
	//退出栈中所有Activity
	public void exit(){
		while(true){
			Activity activity=currentActivity();
			if(activity==null){
				System.exit(0);
				break;
			}
			activity.finish();
			popActivity(activity);
		}
	}
}


步骤三:使用改工具类,进行退出到所有的Activity


在这里插入图片描述

这样就退出所有的Activity了



需要注意的是

我之前使用过Process.killProcess(Process.myPid())和System.exit()

这两种方法,这两周方法只能退出到当前的Activity,对于非正常退出的Activity会进行重启,网上查的原有是因为Android os 认为APP是被意外终止的,所以会重新启动。如果有多个Activity就采用上述的办法,单个Activity就使用Process.killProcess(Process.myPid())和System.exit()。



版权声明:本文为weixin_43863463原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。