您的位置:首页 > 其它

自定义Activity栈 管理Activity--ArrayList

2016-03-12 11:08 447 查看
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: