转载请注明出处: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. ecos的app生命周期

    5种变迁,安装.更新.启动.暂停.卸载,每个app都可以自行维护每种变迁 方法简单,只需要在app/$app_name目录下定义task.php文件 <?php class desktop_ta ...

  2. C++ Builder多线程编程技术经验谈(转)

    源:C++ Builder多线程编程技术经验谈 线程之可行性   在很多情况下,可能需要为程序创建线程.这里给出其中一些可能性: (1)如果创建的是一个多文档接口(Multiple Document ...

  3. Modbus测试工具 :Modbus Poll,Modbus Slave

    源:http://blog.sina.com.cn/s/blog_49352090010138e7.html Modbus测试工具 :Modbus Poll,Modbus Slave

  4. 关于 CentOS 7 里面 普通用户 Ulimit max user processes 值的问题

    最近在对tomcat 的一个 项目进行 压测, 普通用户 启动 tomcat 的时候 压力上去以后就会报 java.lang.OutOfMemoryError 的错误, 这种错误 按道理来说都是 系统 ...

  5. DNS原理及其解析过程

    网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133” 之类的IP地址,而不能认识域名.我们无法记住10个以上IP地 ...

  6. 电子工程师名片——FAT16文件系统(转)

    源:电子工程师名片——FAT16文件系统 从8月8号开始,连续一个月利用每天下班时间和周末的时间终于初步完成了一个电子工程师的电路板名片,就像U盘一样,不过这个FLASH只有64KB的大小,用的单片机 ...

  7. postgresql 数据库的备份和恢复 (pg_dump 和 pg_restore)

    pg_dump 用来备份数据库: pg_restore 用来恢复数据库: 备份出来的文件可以用 XZ (linux 自带的压缩工具压缩). XZ压缩最新压缩率之王 xz这个压缩可能很多都很陌生,不过您 ...

  8. Inside dependency property

    依赖属性的定义,分为3步(以PresentationFramework中的System.Windows.Controls.Button为例) 1.  声明依赖属性 public static read ...

  9. iOS开发——获取手机当前WiFi名和MAC地址

    获取手机WiFi信息. iOS9以前的方法,还是能用,警告就警告吧!iOS9以后使用的是苹果最新的API框架,NetworkExtension/NEHotspotHelper.h,这个框架,第一次开放 ...

  10. JAVA基础--单例模式

    public class Singleton02 { // 私有的静态的类变量 private static Singleton02 instance = null; // 私有的构造方法 priva ...