activity栈管理

2018-09-17  本文已影响0人  谁动了我的代码QAQ

应用的activity的管理栈(借鉴)

 /**
 * activity堆栈式管理
 */
public class ActivityManager {

     private static Stack<Activity> activityStack;
     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<>();
    }
    activityStack.add(activity);
}

/**
 * 获取当前Activity(堆栈中最后一个压入的)
 */
public Activity currentActivity() {
    return activityStack.lastElement();
}

/**
 * 结束当前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
 *
 * 
 */
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 ignored) {
    }
}

/**
 * 返回当前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;
    }
  }
}
上一篇 下一篇

猜你喜欢

热点阅读