自定义Activity栈 管理Activity--ArrayList

public class ActivityManager {
private static ActivityManager manager;
private ArrayList<Activity> activityList = new ArrayList();
private Activity mActivity;
private static final int initIndex = -1;
private int currentIndex = initIndex;
private int size = 0;

private ActivityManager() {
}

public static ActivityManager getInstance() {
    if (manager == null) { // 单例模式 懒汉模式
        manager = new ActivityManager();
    }
    return manager;
}

/**
 * 当前栈内有多少个Activity
 *
 * @return
 */
public int getActiviyTaskNum() {
    return size;
}

/**
 * 得到Activity栈,按照入栈顺序由先到后返回
 *
 * @return
 */
public ArrayList<Activity> getActiviyTask() {
    return activityList;
}


/** 入栈
 * @param activity
 */
public void addActivity(Activity activity) {
    if (activity != null) {
        activityList.add(activity);
        upDateSC();
    } else {
        new NullPointerException(" ActivityManager.addActivity() Activity not null");
    }

}

/**
 * 移除指定Activity
 *
 * @param activity
 */
public void removeActiviyt(Activity activity) {
    if (activity != null) {
        remove(activity);
    } else {
        new NullPointerException(" ActivityManager.removeActiviyt() Activity not null");
    }
}

/**
 * 出栈
 */
private void remove(Activity activity) {
    activity.finish();
    activityList.remove(activity);
    upDateSC();
}

/**
 * 更新数据  size currentIndex
 */
private void upDateSC() {
    size = activityList.size();
    currentIndex = size - 1;
}

/**
 * 移除栈顶Activity(Arraylist 最后一个下标)
 */
public void removeTopActiviyt() {
    if (currentIndex > initIndex) {
        getActivity(currentIndex);
        remove(mActivity);
    } else {
        new NullPointerException("Activity Stack is null");
    }
}

/**
 * 退出程序
 */
public void removeAllActiviy() {
    while (currentIndex > initIndex) {
        getActivity(currentIndex);
        remove(mActivity);
    }
    android.os.Process.killProcess(android.os.Process.myPid());
    System.exit(0);
}

/**
 * 得到Activity
 */
private void getActivity(int index) {
    mActivity = activityList.get(index);
}

   /**
 * 得到栈顶Activity
 *
 * @return
 */
public Activity getCurrentStackTopActivity() {
    if (currentIndex > initIndex) {
        getActivity(currentIndex);
        return mActivity;
    } else {
        new NullPointerException("Activity Stack is null");
        return null;
    }
}

/**
 * 保留指定的Activity
 *
 * @param activity
 */
public void removeAllActiviyExceptOne(Activity activity) {
    while (currentIndex > initIndex) {
        getActivity(currentIndex);
        if (activity != mActivity) {
            remove(mActivity);
        } else if (activity == mActivity && size == 1) {// 如果 是同一个activity 
        //并且activity栈的大小为1 时,退出循环。
            break;
        }
    }
}
如有错误,欢迎指正!email:704084109@qq.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值