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;
}
}
}
自定义Activity栈 管理Activity--ArrayList
最新推荐文章于 2017-02-03 10:07:21 发布