自定义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
相关文章推荐
- 单链表逆转
- VIM配置
- 对于大学4年的反思
- 【bzoj1076】[SCOI2008]奖励关 状压DP
- 基于空间金字塔池化的卷积神经网络物体检测
- 《数据结构》2.1递增链表的合并
- android json解析及简单例子
- rabbitmq 学习网站
- cocopods安装使用和安装过程中遇到的问题及解决办法(2016)
- 斗战神 刷图电罗刹攻略
- Ubuntu Server 12.04 静态IP简洁配置
- 对fgets末尾'\0'的处理
- String为什么被设计成final以及字符串池的学习
- Practical Rendering and Computation with Direct3D 11学习笔记(2.2.1)
- 【数据结构与算法】二叉树递归与非递归遍历(附完整源码)
- Android ANR 分析解决方法
- ipad pro 为什么不行
- 四则运算加强版
- 对fgets末尾'\0'的处理
- android开发游记:APP内部调启百度、高德、web地图导航