Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

136 rindas
3.2KB

  1. package com.example.tidalairpeisong.utils;
  2. import android.app.Activity;
  3. import java.util.Iterator;
  4. import java.util.Stack;
  5. public class ActivityTaskManager {
  6. public static Stack<Activity> getActivityStack() {
  7. return activityStack;
  8. }
  9. private static Stack<Activity> activityStack;
  10. private static ActivityTaskManager instance;
  11. private ActivityTaskManager() {
  12. }
  13. /**
  14. * 单一实例
  15. */
  16. public static ActivityTaskManager getInstance() {
  17. if (instance == null) {
  18. instance = new ActivityTaskManager();
  19. }
  20. return instance;
  21. }
  22. /**
  23. * 添加Activity到堆栈
  24. */
  25. public void addActivity(Activity activity) {
  26. if (activityStack == null) {
  27. activityStack = new Stack<>();
  28. }
  29. activityStack.add(activity);
  30. }
  31. /**
  32. * 获取栈顶Activity(堆栈中最后一个压入的)
  33. */
  34. public Activity getTopActivity() {
  35. return activityStack.lastElement();
  36. }
  37. /**
  38. * 结束栈顶Activity(堆栈中最后一个压入的)
  39. */
  40. public void finishTopActivity() {
  41. Activity activity = activityStack.lastElement();
  42. finishActivity(activity);
  43. }
  44. /**
  45. * 结束指定类名的Activity
  46. *
  47. * @param cls
  48. */
  49. public void finishActivity(Class<?> cls) {
  50. Iterator iterator = activityStack.iterator();
  51. while (iterator.hasNext()) {
  52. Activity activity = (Activity) iterator.next();
  53. if (activity.getClass().equals(cls)) {
  54. iterator.remove();
  55. activity.finish();
  56. }
  57. }
  58. }
  59. /**
  60. * 结束所有Activity
  61. */
  62. @SuppressWarnings("WeakerAccess")
  63. public void finishAllActivity() {
  64. for (int i = 0, size = activityStack.size(); i < size; i++) {
  65. if (null != activityStack.get(i)) {
  66. activityStack.get(i).finish();
  67. }
  68. }
  69. activityStack.clear();
  70. }
  71. /**
  72. * 除指定Activity,结束所有Activity
  73. */
  74. @SuppressWarnings("WeakerAccess")
  75. public void finishAllActivityExcept(Class<?> cls) {
  76. Iterator iterator = activityStack.iterator();
  77. while (iterator.hasNext()) {
  78. Activity activity = (Activity) iterator.next();
  79. if (!activity.getClass().equals(cls)) {
  80. iterator.remove();
  81. activity.finish();
  82. }
  83. }
  84. }
  85. /**
  86. * 退出应用程序
  87. */
  88. public void appExit() {
  89. try {
  90. finishAllActivity();
  91. System.exit(0);
  92. android.os.Process.killProcess(android.os.Process.myPid());
  93. } catch (Exception e) {
  94. }
  95. }
  96. /**
  97. * 结束指定的Activity
  98. */
  99. public void finishActivity(Activity activity) {
  100. if (activity != null) {
  101. activityStack.remove(activity);
  102. activity.finish();
  103. activity = null;
  104. }
  105. }
  106. /**
  107. * 得到指定类名的Activity
  108. */
  109. public Activity getActivity(Class<?> cls) {
  110. for (Activity activity : activityStack) {
  111. if (activity.getClass().equals(cls)) {
  112. return activity;
  113. }
  114. }
  115. return null;
  116. }
  117. }