haijiang
2018-04-18 1b6d4163ff60828aa6e5043ad29d2167801caac7
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package com.moral.andbrickslib.utils;
 
import android.app.Activity;
import android.content.Context;
import android.text.TextUtils;
 
import java.util.Iterator;
import java.util.Stack;
 
/**
 * Activity管理类
 * Created by hjzhang on 2016/3/15.
 */
public class ActivityManager {
    private static Stack<Activity> activityStack;
    private static ActivityManager instance;
 
    private ActivityManager() {
    }
 
    public static ActivityManager getActivityManager() {
        if(instance == null) {
            instance = new ActivityManager();
        }
        return instance;
    }
 
    /**
     * Activity进栈
     */
    public void addActivity(Activity activity) {
        if(activityStack == null) {
            activityStack = new Stack();
        }
 
        activityStack.add(activity);
    }
 
    /**
     * 返回当前Activity
     */
    public Activity currentActivity() {
        if(activityStack == null) {
            return null;
        } else {
            Activity activity = (Activity)activityStack.lastElement();
            return activity;
        }
    }
 
    /**
     * 退出当前Activity
     */
    public void finishActivity() {
        if(activityStack != null) {
            Activity activity = (Activity)activityStack.lastElement();
            this.finishActivity(activity);
        }
    }
 
    /**
     * 根据activity实例退出
     * @param activity
     */
    public void finishActivity(Activity activity) {
        if(activityStack != null) {
            if(activity != null) {
                activityStack.remove(activity);
                activity.finish();
                activity = null;
            }
 
        }
    }
 
    /**
     * 根据Activity名称退出
     * @param cls
     */
    public void finishActivity(Class<?> cls) {
        if(activityStack != null) {
            Iterator iterator = activityStack.iterator();
            while(iterator.hasNext()) {
                Activity activity = (Activity)iterator.next();
                if(activity != null && activity.getClass().equals(cls)) {
                    activity.finish();
                    iterator.remove();
                }
            }
        }
    }
 
    public void finishAllActivity() {
        if(activityStack != null) {
            Iterator iterator = activityStack.iterator();
            while(iterator.hasNext()) {
                Activity activity = (Activity)iterator.next();
                if(activity != null && !activity.isFinishing()) {
                    activity.finish();
                }
            }
            activityStack.clear();
        }
    }
 
    /**
     * 判断一个Activity 是否存在
     *
     * @param clz
     * @return
     */
    public  <T extends Activity> boolean isActivityExist(String clz) {
        boolean res;
        Activity activity = getActivity(clz);
        if (activity == null) {
            res = false;
        } else {
            if (activity.isFinishing()) {
                res = false;
            } else {
                res = true;
            }
        }
 
        return res;
    }
 
    public Activity getActivity(String activityName) {
        Iterator iterator = activityStack.iterator();
        Activity activity;
        do {
            if(!iterator.hasNext()) {
                return null;
            }
            activity = (Activity)iterator.next();
        } while(activity == null || !TextUtils.equals(activity.getClass().getName(), activityName));
 
        return activity;
    }
 
    /**
     * 退出app
     * @param context
     */
    public void appExit(Context context) {
        try {
            this.finishAllActivity();
        } catch (Exception var3) {
        }
 
    }
}