方法一:
创建一个activity控制器
public class ActivityCollector { public static List<Activity> activities=new ArrayList<>(); public static void addActivity(Activity activity){ activities.add(activity); } public static void removeActivity(Activity activity){ activities.remove(activity); } public static void finishAll(){ for (Activity activity:activities){ if (!activity.isFinishing()){ activity.finish(); } } } }在BaseActivity中,
onCreate方法中调用
ActivityCollector.addActivity(this);onDestroy方法中调用
ActivityCollector.removeActivity(this);在需要退出应用的任意地方调用
ActivityCollector.finshAll();
方法二:
moveTaskToBack()方法:在activity中调用
nonRoot)方法即可将activity 退到后台,注意不是finish()退出。
参数说明:
参数为false——代表只有当前activity是task根,指应用启动的第一个activity时,才有效;
参数为true——则忽略这个限制,任何activity都可以有效。
说明:判断Activity是否是task根,Activity本身给出了相关方法:isTaskRoot()
moveTaskToBack调用后,task中activity的顺序不会发生变化,例如A启动B,B中调用此方法退到后台,重新启动应用会调用B中的onRestart-onStart-onResume方法,不会重新调用onCreate,而且在B中按下back键返回的还是A,这就是退到后台的功能。
总结就是调用 moveTaskToBack(true)方法的时候,会使应用退出到后台,但是应用并没有finish掉。当打开app的时候,app还是保留原来的状态。