在实际开发中,有时需要关闭所有activity,获取当前Activity上一个Activity、寻找某个类型的Activity、结束某个Activity等需求。此时activity管理显得尤为重要。
import android.app.Activity; import android.util.Log; import java.util.Stack; public class ActivityManager { private static final String TAG = "ActivityManager"; private static Stack<Activity> activities; private static ActivityManager instance; private ActivityManager() { activities = new Stack<>(); } public static ActivityManager getInstance() { if (instance == null) { synchronized (ActivityManager.class) { instance = new ActivityManager(); } } return instance; } //移除activity在onDestroy里调用 public void removeActivity(Activity activity) { if (activity != null) { if (activities.isEmpty()) { return; } activities.remove(activity); } } public Activity currentActivity() { if (activities.isEmpty()) { return null; } return activities.lastElement(); } //添加activity,在onCreate方法里调用 public void pushActivity(Activity activity) { activities.add(activity); } //移除所有的activity public void removeAllActivity() { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } if (!activity.isFinishing()) { activity.finish(); } else { popActivity(activity); } if (activities.isEmpty()) { break; } } } }