转载请注明出处: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. mysql查询的cache

    Mysql SQL_NO_CACHE不生效的问题 贾春春 1 票 1224 我想通过SQL_NO_CACHE得知某个query查询速度,但似乎无法实现 例如首次查询: mysql> select ...

  2. Highcharts选项配置详细说明文档

    Highcharts提供大量的选项配置参数,您可以轻松定制符合用户要求的图表,目前官网只提供英文版的开发配置说明文档,而中文版的文档网上甚少,且零散不全.这里,我把Highcharts常用的最核心的参 ...

  3. MemSQL 取代 HDFS 与 Spark 结合,性能大幅提升

    MemSQL 取代 HDFS 与 Spark 结合,性能大幅提升 3,597 次阅读 - 基础架构 Apache Spark是目前非常强大的分布式计算框架.其简单易懂的计算框架使得我们很容易理解.虽然 ...

  4. 使用Javascript/jQuery将javascript对象转换为json格式数据 - 海涛的CSDN博客 - 博客频道 - CSDN.NET

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  5. 负载均衡 LVS+Keepalived

    系统  CentOS 5.6 X64 物理机 IP 10.10.10.104 Xen : 三台 CentOS 5.8 ip为: 10.10.10.106        10.10.10.107     ...

  6. camstar --飞达上料

    业务场景:某工厂的SMT车间接到生产PCB(3151502),数量1000片.如果实现飞达进行上料,并在贴片机工作时,系统自动进行物料消耗.3151502的BOM为1107790,1107792,11 ...

  7. ashx文件中使用session提示“未将对象引用设置到对象的实例”

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;u ...

  8. java 读写excle

    2014-04-16 20:38:20 java读写excel 晚上打算研究如何c来编写

  9. bzoj 1036

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 11858  Solved: 4803[Submit ...

  10. Variation of e.touches, e.targetTouches and e.changedTouches

    We have the following lists: touches: A list of information for every finger currently touching the ...