统一应用程序中所有Activity的栈管理

news/2024/7/6 6:29:42
public class ActivityManager {


    //单例模式:饿汉式
    private ActivityManager(){


    }
    private static ActivityManager activityManager = new ActivityManager();


    public static ActivityManager getInstance(){
        return activityManager;
    }


    //提供栈的对象
    private Stack<Activity> activityStack = new Stack<>();


    //activity的添加
    public void add(Activity activity){
        if(activity != null){
            activityStack.add(activity);
        }
    }


    //插曲:[12,3,44,6,332,65,-56,1]
    //删除指定的activity
    public void remove(Activity activity){
        if(activity != null){
//            for(int i = 0; i < activityStack.size(); i++) {
//                Activity currentActivity = activityStack.get(i);
//                if(currentActivity.getClass().equals(activity.getClass())){
//                    currentActivity.finish();//销毁当前的activity
//                    activityStack.remove(i);//从栈空间移除
//                }
//            }


            for(int i = activityStack.size() - 1;i >= 0;i--){
                Activity currentActivity = activityStack.get(i);
                if(currentActivity.getClass().equals(activity.getClass())){
                    currentActivity.finish();//销毁当前的activity
                    activityStack.remove(i);//从栈空间移除
                }
            }
        }
    }


    //删除当前的activity
    public void removeCurrent(){
        //方式一:
//        Activity activity = activityStack.get(activityStack.size() - 1);
//        activity.finish();
//        activityStack.remove(activityStack.size() - 1);


        //方式二:
        Activity activity = activityStack.lastElement();
        activity.finish();
        activityStack.remove(activity);
    }


    //删除所有的activity
    public void removeAll(){
        for (int i = activityStack.size() - 1;i >= 0;i--){
            Activity activity = activityStack.get(i);
            activity.finish();
            activityStack.remove(activity);
        }
    }


    //返回栈大小
    public int size(){
        return activityStack.size();
    }


}

http://www.niftyadmin.cn/n/3649346.html

相关文章

[dotNET]“ThreadPool 对象中没有足够的自由线程来完成操作”的现象和解决办法

“ThreadPool 对象中没有足够的自由线程来完成操作”的现象和解决办法Ultrapower 20050406其实微软有一篇《异步 HttpWebRequest、接口实现及其他》对此种现象解释得非常清楚&#xff0c;我这边只是做一个笔记。最常见的就是使用HttpWebRequest的时候&#xff0c;调用Send方法出…

Android工程师一定要知道的国内应用市场汇总

2010年在国内出现了Android系统智能机的大规模发展&#xff0c;而应用商城也在火拼起来&#xff0c;下面我推荐一下国内Android的免费软件商城。 应用汇 掌上应用汇是一款基于Android系统的本土化软件市场&#xff0c;掌上应用汇团队致力于为中国用户打造最全面&#xff0c;最…

debian 10 安装_如何在Debian 10上安装和使用ClickHouse

debian 10 安装介绍 (Introduction) ClickHouse is an open-source, column-oriented analytics database created by Yandex for OLAP and big data use cases. ClickHouse’s support for real-time query processing makes it suitable for applications that require sub-s…

虚拟机安装Kali Linux操作系统

▣ 博主主站地址&#xff1a;微笑涛声 【www.cztcms.cn】 Kali Linux是基于Debian的Linux发行版&#xff0c; 设计用于数字取证操作系统。每一季度更新一次。由Offensive Security Ltd维护和资助。最先由Offensive Security的Mati Aharoni和Devon Kearns通过重写BackTrack来完成…

指定textview中的某部分进行点击

CharSequence str"没有任何数据&#xff0c;请登录!";SpannableString spannableString1 new SpannableString(str);spannableString1.setSpan(new ClickableSpan(){Overridepublic void onClick(View widget) {Intent intentnew Intent(getActivity(),LoginActivit…

Android重力感应代码例子

android中的很多游戏的游戏都使用了重力感应的技术&#xff0c;就研究了一下重力感应 以屏幕的左下方为原点&#xff0c;箭头指向的方向为正。从-10到10&#xff0c;以浮点数为等级单位&#xff0c;想象以下情形&#xff1a; 手机屏幕向上&#xff08;z轴朝天&#xff09;水平…

react中创建一个组件_如何在React中创建社交关注组件

react中创建一个组件介绍 (Introduction) When you’re building a web site, you’ll often want to share your Social Media accounts for visitors to follow. In this tutorial, you’ll create a Social Follow component in React, using the social media icons provid…

软件框架之imageloader的使用

Imageloader的使用 一、特点&#xff1a; 1&#xff09;多线程下载图片&#xff0c;图片可以来源于网络&#xff0c;文件系统&#xff0c;项目文件夹assets中以及drawable中等 2&#xff09;支持随意的配置ImageLoader&#xff0c;例如线程池&#xff0c;图片下载器&#xff…