我们再开发的时候,往往会碰到,当用户完成某个操作的时候,前期经历的页面都在后台关闭,而操作失败,则页面不关闭,那么我们就想到了ActivityManager的使用(上一篇文章写的使用任务栈的方式,因为任务栈的特点,完成不了更多的需求,所以放弃)
ActivityManager代码
import android.app.Activity;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
/**
* Activity管理类
*/
public class ActivityManager {
public static ActivityManager mActivityManager;
/**
* 存放Activity的map
*/
private List<Activity> mActivities = new ArrayList<Activity>();
//将构造方法私有化,所以不能通构造方法来初始化ActivityManager
private ActivityManager() {
}
;
//采用单例模式初始化ActivityManager,使只初始化一次
public static ActivityManager getInstance() {
if (mActivityManager == null) {
mActivityManager = new ActivityManager();
}
return mActivityManager;
}
//添加activity
public void addActivity(Activity activity) {
if (!mActivities.contains(activity)) {
mActivities.add(activity);
}
}
//关闭指定的Activity
public void removeActivity(Activity activity) {
if (activity != null) {
if (mActivities.contains(activity)) {
mActivities.remove(activity);
}
activity.finish();
activity = null;
}
}
//将activity全部关闭掉
public void clearAll() {
for (Activity activity : mActivities) {
activity.finish();
}
}
//将activity全部关闭掉,除掉MainAcitiy
public void clearOther() {
for (Activity activity : mActivities) {
Log.e("eerrree", activity.getClass().getSimpleName());
if (activity.getClass().getSimpleName().equals("MainActivity")) {
continue;
}
activity.finish();
}
}
}
第二步,在我们封装的Base的OnCreat方法中调用,
activitymanager = ActivityManager.getInstance();
activitymanager.addActivity(this);
这样所有集成Base的页面都会被存入集合中,待需要的时候关闭