当前位置: 首页 > news >正文

activity堆栈式管理

activity堆栈式管理

https://www.bbsmax.com/A/GBJrXEVBd0/

 
  1. package com.chinaCEB.cebActivity.utils;
  2.  
  3. import java.util.Stack;
  4.  
  5. import android.app.Activity;
  6. import android.content.Context;
  7.  
  8. /**
  9. * activity堆栈式管理
  10. *
  11. * @author FireAnt(http://my.oschina.net/LittleDY)
  12. * @created 2014年10月30日 下午6:22:05
  13. *
  14. */
  15. public class AppManager {
  16.  
  17. private static Stack<Activity> activityStack;
  18. private static AppManager instance;
  19.  
  20. private AppManager() {}
  21.  
  22. /**
  23. * 单一实例
  24. */
  25. public static AppManager getAppManager() {
  26. if (instance == null) {
  27. instance = new AppManager();
  28. }
  29. return instance;
  30. }
  31.  
  32. /**
  33. * 添加Activity到堆栈
  34. */
  35. public void addActivity(Activity activity) {
  36. if (activityStack == null) {
  37. activityStack = new Stack<Activity>();
  38. }
  39. activityStack.add(activity);
  40. }
  41.  
  42. /**
  43. * 获取当前Activity(堆栈中最后一个压入的)
  44. */
  45. public Activity currentActivity() {
  46. Activity activity = activityStack.lastElement();
  47. return activity;
  48. }
  49.  
  50. /**
  51. * 结束当前Activity(堆栈中最后一个压入的)
  52. */
  53. public void finishActivity() {
  54. Activity activity = activityStack.lastElement();
  55. finishActivity(activity);
  56. }
  57.  
  58. /**
  59. * 结束指定的Activity
  60. */
  61. public void finishActivity(Activity activity) {
  62. if (activity != null && !activity.isFinishing()) {
  63. activityStack.remove(activity);
  64. activity.finish();
  65. activity = null;
  66. }
  67. }
  68.  
  69. /**
  70. * 结束指定类名的Activity
  71. */
  72. public void finishActivity(Class<?> cls) {
  73. for (Activity activity : activityStack) {
  74. if (activity.getClass().equals(cls)) {
  75. finishActivity(activity);
  76. break;
  77. }
  78. }
  79. }
  80.  
  81. /**
  82. * 结束所有Activity
  83. */
  84. public void finishAllActivity() {
  85. for (int i = 0, size = activityStack.size(); i < size; i++) {
  86. if (null != activityStack.get(i)) {
  87. //finishActivity方法中的activity.isFinishing()方法会导致某些activity无法销毁
  88. //貌似跳转的时候最后一个activity 是finishing状态,所以没有执行
  89. //内部实现不是很清楚,但是实测结果如此,使用下面代码则没有问题
  90. // find by TopJohn
  91. //finishActivity(activityStack.get(i));
  92.  
  93. activityStack.get(i).finish();
  94. //break;
  95. }
  96. }
  97. activityStack.clear();
  98. }
  99.  
  100. /**
  101. * 获取指定的Activity
  102. *
  103. * @author kymjs
  104. */
  105. public static Activity getActivity(Class<?> cls) {
  106. if (activityStack != null)
  107. for (Activity activity : activityStack) {
  108. if (activity.getClass().equals(cls)) {
  109. return activity;
  110. }
  111. }
  112. return null;
  113. }
  114.  
  115. /**
  116. * 退出应用程序
  117. */
  118. public void AppExit(Context context) {
  119. try {
  120. finishAllActivity();
  121. // 杀死该应用进程
  122. android.os.Process.killProcess(android.os.Process.myPid());
  123. System.exit(0);
  124. } catch (Exception e) {
  125. }
  126. }
  127. }

堆栈式管理就是好,我想后退,不用sb的finish了。而且更多的方便。

 

 

 

 

 

 

 

相关文章:

  • XLUA学习笔记之C#和Lua之间的相互调用
  • Lua 元表(Metatable)
  • XLua Lua访问C#中的方法(四)访问枚举
  • Unity中Shader和AssetBundle结合使用的注意事项
  • 解决打包AssetBundle时Shader(材质)丢失问题
  • hader in AssetBundle
  • 八:Unity ShaderLab内存优化
  • Unity5 多场景 打包Assetbundle 以及 Shader Stripping 导致 LightMap 全部丢失的解决方法
  • Unity Shader优化
  • 使用ZeroBrane Studio进行LUA远程调试
  • Linux运维知识之Lua的集成开发环境ZeroBrane Studio
  • 配置xLua开发环境
  • Unity 使用xLua遇到的坑
  • XLua使用过程中的异常记录
  • Xlua异常记录
  • [deviceone开发]-do_Webview的基本示例
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【知识碎片】第三方登录弹窗效果
  • CSS相对定位
  • Java Agent 学习笔记
  • Laravel 实践之路: 数据库迁移与数据填充
  • Nodejs和JavaWeb协助开发
  • rc-form之最单纯情况
  • SAP云平台里Global Account和Sub Account的关系
  • uni-app项目数字滚动
  • 服务器从安装到部署全过程(二)
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何实现 font-size 的响应式
  • 实现简单的正则表达式引擎
  • 正则表达式小结
  • ​香农与信息论三大定律
  • ​学习一下,什么是预包装食品?​
  • (70min)字节暑假实习二面(已挂)
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm码农论坛 毕业设计 231126
  • (七)c52学习之旅-中断
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (四)库存超卖案例实战——优化redis分布式锁
  • (算法)Travel Information Center
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .apk文件,IIS不支持下载解决
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .net core 控制台应用程序读取配置文件app.config
  • .net core控制台应用程序初识
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net Memory Profiler的使用举例
  • .net对接阿里云CSB服务
  • .Net中ListT 泛型转成DataTable、DataSet
  • :如何用SQL脚本保存存储过程返回的结果集
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)