转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6307239.html

public class AppManager {
  private static Stack<Activity> mStack;
  private static AppManager instance;

  private AppManager(){}
  public static AppManager getInstance(){
    if(instance!=null){
      instance=new AppManager();
    }
    return instance;
  }

  /**
  * 添加Activi到堆栈
  * @param activity
  */
  public void addActivity(Activity activity){
    if(mStack!=null){
      mStack=new Stack<Activity>();
    }
    mStack.add(activity);
  }

  /**
  * 获取当前Activity(堆栈中最后压入的一个)
  * @return
  */
  public Activity currentActivity(){
    return mStack.lastElement();
  }

  public boolean isLastActivity(Class cls){
    if(mStack==null||mStack.size()==0){
      return false;
    }
    return mStack.get(mStack.size()-1).getClass().equals(cls);
  }

  /**
  * 结束当前Activity(堆栈中最后压入的一个)
  */
  public void finishCurrentActivity(){
    finishActivity(mStack.lastElement());
  }

  /**
  * 结束指定Acitivity
  * @param activity
  */
  public void finishActivity(Activity activity){
    if(activity!=null){
      mStack.remove(activity);
      activity.finish();
      activity=null;
    }
  }

  /**
  * 结束指定类名的Activity
  * @param cls
  */
  public synchronized void finishActivity(Class<?> cls){
    if (mStack==null||mStack.size()==0){
    return;
    }
    for (Activity activity:mStack) {
      if (activity.getClass().equals(cls)){
        finishActivity(activity);
      }
    }
  }

  /**
  * 结束所有Activity
  */
  public void finishAllActivity(){
    for (int i=0,size=mStack.size();i<size;i++){
      if(null!=mStack.get(i)){
        mStack.get(i).finish();
      }
    }
    mStack.clear();
  }

  /**
  * 退出应用程序
  * @param context
  */
  public void AppExit(Context context){
    finishAllActivity();
    System.exit(0);
  }
}

Android 自定义Activity栈对Activity统一管理的更多相关文章

  1. Android Studio 中 Gradle 依赖的统一管理(rootProjectt)

    最近遇到Android Studio 中 Gradle 依赖的统一管理的不懂得地方,看大神的也没看懂,百度了一下,使用起来还挺方便 下面是链接,在这里我就不详细说明了, http://www.jian ...

  2. ActivityManagerService数据结构Activity栈管理(二)

    ActivityManagerService要管理四大组件,那四大组件就必须在AMS中有存在的形式,这里先从AMS 如何管理Activity 谈起: Activity在AMS 中存在的形式为Activ ...

  3. activity栈管理的3种方式

    一.背景 在android开发过程最经常使用的组件非activity莫属. 通过分析activity的各种跳转,执行同学能够分析用户的各种行为.更重要的一点是在做插件化的过程中,我们经常会对activ ...

  4. Android 一次退出所有activity的方法

    转自:http://bbs.51cto.com/thread-970933-1.html 因为android的API中没有提供一次性退出的接口所以想要在多activity的程序里面一次性退出的话就要费 ...

  5. android的activity栈管理

    在进行BlackBerry程序开发的时候,BlackBerry提供了一个管理Screen的栈,用来从任何地方来关闭位于最上一层的Screen,使用UiApplication.getUiApplicat ...

  6. Android解析ActivityManagerService(二)ActivityTask和Activity栈管理

    前言 关于AMS,原计划是只写一篇文章来介绍,但是AMS功能繁多,一篇文章的篇幅远远不够.这一篇我们接着来学习与AMS相关的ActivityTask和Activity栈管理. 1.ActivitySt ...

  7. 朝花夕拾-android 自定义application 管理activity的生命周期

    为了安全退出多个已创建的activity? 可以自定义application:myapplication. 增加一个list成员保存,一些关键的已创建的activity实例: private List ...

  8. Android开发 ---SQLite数据库,lock文件,结果集游标,适配器,安全退出,给连接设置下划线,编辑器,投影,ContentValues存储,DbHelper,activity栈

    目录截图: 1.activity_main.xml 主界面效果: <?xml version="1.0" encoding="utf-8"?> &l ...

  9. 【Android】11.1 Activity的生命周期和管理

    分类:C#.Android.VS2015: 创建日期:2016-02-21 一.基本概念 1.必须理解这些方法,否则你编的程序根本就没法在实际项目中使用 当然,如果仅仅是为了玩玩,或者仅仅是作为例子为 ...

随机推荐

  1. Object.defineproperty实现数据和视图的联动 ------是不是就是 Angular 模型和视图的同步的实现方式???

    参考:http://www.cnblogs.com/oceanxing/p/3938443.html https://developer.mozilla.org/zh-CN/docs/Web/Java ...

  2. gitlab应用

    1.git config --global user.email "my@bimt.com" //注册本地环境 2.ssh-keygen -t rsa -C "my@bi ...

  3. ruby, gem install 出现网络错误

    gem sources #查看目前的源 gem sources --remove https://rubygems.org/ gem sources -a https://ruby.taobao.or ...

  4. nodejs连接mysql实例

    1.在工程目录下运行npm install mysql安装用于nodejs的mysql模块: 2.创建db.js模块用于连接mysql,同时定义query查询方法: var mysql = requi ...

  5. linux下 mysql 学习(一)

    1.登录mysql [root@test1 local]# mysql  Welcome to the MySQL monitor. Commands end with ; or g. Your My ...

  6. jsoup -- xml文档解析

    jsoup -- xml文档解析 修改 https://jsoup.org/cookbook/modifying-data/set-attributes https://jsoup.org/cookb ...

  7. 做自己的串口调试工具-MFC

    之前一共说了几个软件库,串口通讯的,xml加载的,还有动态提示的,通过这三个库就可以实现一个自己的串口调试工具,成品如下 动态加载配置文件之后如下 软件可以在xml中配置发送的字符串,不算是大工程,但 ...

  8. Delphi2010生成GB2312字库乱码问题

    用Delphi2010做一个点阵字库软件,字库生成部分是从一个用Delphi2007做旧的程序里扣出来的.点阵字库软件完成后生成GB2312字库在LED控制卡上显示为乱码.知道Delphi版本高于20 ...

  9. div无法跟随内容的增加而拉伸

    有时将 div 的 height 设置为 auto 后,仍然无法让 div 自动拉伸,发现是 display:block 的原因,将其设置为 inline-block 即可.

  10. 学习wcf

    链接请看下面 第一部分:http://boytnt.blog.51cto.com/966121/796884 第二部分:http://boytnt.blog.51cto.com/966121/7969 ...