直接上代码:

Activity管理类:AppManager

  1. /**
  2. * 应用程序Activity管理类:用于Activity管理和应用程序退出
  3. *
  4. * @author BiHaidong
  5. * @version 1.0
  6. * @created 2015-9-21
  7. */
  8. public class AppManager {
  9. private static Stack<Activity> activityStack = new Stack<Activity>();
  10. /**
  11. * 添加Activity到堆栈
  12. */
  13. public static void addActivity(Activity activity) {
  14. activityStack.push(activity);
  15. }
  16. /**
  17. * 获取当前Activity(堆栈中最后一个压入的)
  18. */
  19. public static Activity currentActivity() {
  20. return activityStack.lastElement();
  21. }
  22. /**
  23. * 结束当前Activity(堆栈中最后一个压入的)
  24. */
  25. public static void finishCurrentActivity() {
  26. Activity activity = activityStack.pop();
  27. activity.finish();
  28. }
  29. /**
  30. * 结束指定的Activity
  31. */
  32. public static void finishActivity(Activity activity) {
  33. if (activity != null) {
  34. activityStack.remove(activity);
  35. if(!activity.isFinishing()) {
  36. activity.finish();
  37. }
  38. }
  39. }
  40. /**
  41. * 结束指定类名的Activity
  42. */
  43. public static void finishActivity(Class<?> cls) {
  44. for (Activity activity : activityStack) {
  45. if (activity.getClass().equals(cls)) {
  46. finishActivity(activity);
  47. }
  48. }
  49. }
  50. /**
  51. * 结束所有Activity
  52. */
  53. public static void finishAllActivity() {
  54. for (Activity activity : activityStack) {
  55. if (activity != null) {
  56. activity.finish();
  57. }
  58. }
  59. activityStack.clear();
  60. }
  61. /**
  62. * 退出应用程序
  63. */
  64. public static void AppExit(Context context) {
  65. try {
  66. finishAllActivity();
  67. ActivityManager manager = (ActivityManager) context
  68. .getSystemService(Context.ACTIVITY_SERVICE);
  69. manager.killBackgroundProcesses(context.getPackageName());
  70. System.exit(0);
  71. } catch (Exception e) {
  72. e.printStackTrace();
  73. }
  74. }
  75. }

然后是BaseActivity

  1. public class BaseActivity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. super.setContentView(R.layout.base_layout);
  6. AppManager.addActivity(this);
  7. }

转载地址:https://blog.csdn.net/u010635353/article/details/49681659

Android:Activity统一堆栈管理(实现随时finish特定或是所有Activty)的更多相关文章

  1. Android Gradle统一依赖管理

    目的: 避免在依赖包出新版本时,需要对每个module中的build.gradle文件都进行修改(如appcompat-v7包),使用这种方式即只需一次修改. 方法一 在项目的根目录创建一个gradl ...

  2. android activity 管理器AMS----概述

    AMS & WMS,应该是app端打交道最多的2个framwork层的service. ActivityManagerService 是android提供给用于管理Activity运行状态的系 ...

  3. Android Activity整体管理和关闭工具类封装

    如何彻底退出程序,在任意位置退出程序,如何管理当前的运行栈,知道activity的堆栈结构等,本文封装了一个Activity管理类,可以方便随时退出程序. /** * 应用程序Activity管理类: ...

  4. Android Activity 管理 (AppManager)(非原创)

    AppManager 类: /** * 应用程序Activity管理类:用于Activity管理和应用程序退出 *  */ public class AppManager {     private ...

  5. Android习惯——给全部Activity添加集合管理

    title: 2017-3-23 Android习惯--给全部Activity添加集合管理 public void ActivityCollector{ public static List<A ...

  6. android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...

  7. Android Activity管理类

    public class AppManager { private static Stack<Activity> activityStack; private static AppMana ...

  8. Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  9. Android Activity的生命周期简单总结

    Android Activity的生命周期简单总结 这里的内容参考官方的文档,这篇文章的目的不是去总结Activity是如何启动,如何创造,以及暂停和销毁的,而是从实际开发中分析在Activity各个 ...

随机推荐

  1. P2P(WFD)之RegClass *****************************TBD

    三个Action Frame的IE会有带上RegClass的信息 Listen Channel element, Channel List element, Operation Channel ele ...

  2. [51nod1503]猪和回文 DP

    ---题面--- 题解: 首先观察到题目要求的是合法回文串的个数,而回文串要求从前往后和从后往前是一样的,因此我们假设有两只猪,分别从左上和右下开始走,走相同的步数最后相遇,那么它们走的路能拼在一起构 ...

  3. hdu 6203 ping ping ping(LCA+树状数组)

    hdu 6203 ping ping ping(LCA+树状数组) 题意:给一棵树,有m条路径,问至少删除多少个点使得这些路径都不连通 \(1 <= n <= 1e4\) \(1 < ...

  4. UDP收/发广播包原理及步骤

    原文链接地址:http://www.2cto.com/net/201311/254834.html UDP收/发广播包原理及步骤 如果网络中两个主机上的应用程序要相互通信,其一要知道彼此的IP,其二要 ...

  5. NAS星云链 入门之从零开发第一个DAPP

    应该有很多小伙伴和我一样,一直想去入手学习区块链,但是总无从下手,有些概念感觉理解了,有感觉没理解.其实这都是“没实践”的锅. 所谓看十遍不如想一遍,想一遍不如做一遍.这不最近星云链nebulas正有 ...

  6. EditPlus直接连接Linux服务器编辑文本文件

    填写好:描述,ip地址,用户名,密码, 然后点下面的高级选项: 然后返回上一个页面,继续 确定 OK: 然后,在主界面左侧点倒三角: 就可以选择我们之前配置的远程服务器地址,弹出提示框 点确定, 就连 ...

  7. java摘要

    **idea 注册 Licensed to ilanyu License Server: http://idea.iteblog.com/key.php 1.文件上传下载 http://blog.cs ...

  8. 7月19日day11总结

    今天学习过程和小结 上午进行测试复习了 1,hdfs中namenode和datanode作用 2,hdfs副本存放机制 3,mapreduce计算处理过程 4,格式化hdfs命令 5,hdfs的核心配 ...

  9. 更改win10和mint双系统默认启动顺序

    更改win7 & Linuxmint双系统安装后更改默认启动顺序 1.打开一个term,编辑/etc/default/grub,即sudo nano /etc/default/grub,把se ...

  10. 通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题

    通过设置nginx的client_max_body_size解决nginx+php上传大文件的问题:用nginx来做webserver的时,上传大文件时需要特别注意client_max_body_si ...