当前位置: 代码迷 >> 综合 >> Activity堆栈式管理器
  详细解决方案

Activity堆栈式管理器

热度:64   发布时间:2023-10-17 21:44:44.0
public class AppManager {//    activity栈private static Stack<Activity> activityStack;
//    activity 单例private static AppManager instance;private AppManager() {}/*** 单一实例*/public static AppManager getAppManager() {if (instance == null) {instance = new AppManager();}return instance;}/*** 添加Activity到堆栈*/public void addActivity(Activity activity) {if (activityStack == null) {activityStack = new Stack<Activity>();}activityStack.add(activity);}/*** 获取当前Activity(堆栈中最后一个压入的)*/public Activity currentActivity() {Activity activity = activityStack.lastElement();return activity;}/*** 结束当前Activity(堆栈中最后一个压入的)*/public void finishActivity() {Activity activity = activityStack.lastElement();finishActivity(activity);}/*** 结束指定的Activity*/public void finishActivity(Activity activity) {if (activity != null && !activity.isFinishing()) {activityStack.remove(activity);activity.finish();activity = null;}}/*** 结束指定类名的Activity*/public void finishActivity(Class<?> cls) {for (Activity activity : activityStack) {if (activity.getClass().equals(cls)) {finishActivity(activity);break;}}}/*** 结束所有Activity*/public void finishAllActivity() {for (int i = 0, size = activityStack.size(); i < size; i++) {if (null != activityStack.get(i)) {finishActivity(activityStack.get(i));break;}}activityStack.clear();}/*** 获取指定的Activity** @author kymjs*/public static Activity getActivity(Class<?> cls) {if (activityStack != null)for (Activity activity : activityStack) {if (activity.getClass().equals(cls)) {return activity;}}return null;}public static Stack<Activity> getActivitys(){return activityStack;}/*** 退出应用程序*/public void AppExit(Context context) {try {finishAllActivity();// 杀死该应用进程android.os.Process.killProcess(android.os.Process.myPid());System.exit(0);} catch (Exception e) {}}/**返回当前Activity栈中Activity的数量* @return*/public int getActivityCount(){int count = activityStack.size();return count;}/*** 堆栈中移除Activity*/public void removeActivity(Activity activity) {if (activityStack == null) {return;}else if(activityStack.contains(activity)){activityStack.remove(activity);}if (activity != null && !activity.isFinishing()) {activity.finish();activity = null;}}
}
  相关解决方案