ActivitiesManager.java
2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.ectrip.cyt.utils;
import java.util.Iterator;
import java.util.Stack;
import android.app.Activity;
/**
* activity堆栈管理
*
*
*/
public class ActivitiesManager {
private static final String TAG = "ActivitiesManager";
private static Stack<Activity> mActivityStack;
private static ActivitiesManager mActivitiesManager;
private ActivitiesManager() {
}
public static ActivitiesManager getInstance() {
if (null == mActivitiesManager) {
mActivitiesManager = new ActivitiesManager();
if (null == mActivityStack) {
mActivityStack = new Stack<Activity>();
}
}
return mActivitiesManager;
}
public int stackSize() {
return mActivityStack.size();
}
public Activity getCurrentActivity() {
Activity activity = null;
try {
activity = mActivityStack.lastElement();
} catch (Exception e) {
return null;
}
return activity;
}
public void popActivity() {
Activity activity = mActivityStack.lastElement();
if (null != activity) {
LogUtil.i(TAG, "popActivity-->"
+ activity.getClass().getSimpleName());
activity.finish();
mActivityStack.remove(activity);
activity = null;
}
}
public void popActivity(Activity activity) {
if (null != activity) {
LogUtil.i(TAG, "popActivity-->"
+ activity.getClass().getSimpleName());
// activity.finish();
mActivityStack.remove(activity);
activity = null;
}
}
public void pushActivity(Activity activity) {
mActivityStack.add(activity);
LogUtil.i(TAG, "pushActivity-->" + activity.getClass().getSimpleName());
}
public void popAllActivities() {
while (!mActivityStack.isEmpty()) {
Activity activity = getCurrentActivity();
if (null == activity) {
break;
}
activity.finish();
popActivity(activity);
}
}
public void popSpecialActivity(Class<?> cls) {
try {
Iterator<Activity> iterator = mActivityStack.iterator();
Activity activity = null;
while (iterator.hasNext()) {
activity = iterator.next();
if (activity.getClass().equals(cls)) {
activity.finish();
iterator.remove();
activity = null;
}
}
} catch (Exception e) {
}
}
public void peekActivity() {
for (Activity activity : mActivityStack) {
if (null == activity) {
break;
}
LogUtil.i(TAG, "peekActivity()-->"
+ activity.getClass().getSimpleName());
}
}
}