开源
中国摘取的代码,这个可以管理activity
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
class="java keyword">package net.oschina.app; 
  
import java.util.Stack; 
  
import android.app.Activity; 
import android.app.ActivityManager; 
import android.content.Context; 
  
/** 
* 应用程序Activity管理类:用于Activity管理和应用程序退出 
* @author liux (http://my.oschina.net/liux) 
* @version 1.0 
* @created 2012-3-21 
*/
public class AppManager { 
  
    private static Stack<Activity> activityStack; 
    private static AppManager instance; 
  
    private AppManager(){} 
    /** 
     * 单一实例 
     */
    public static AppManager getAppManager(){ 
        if(instance==null){ 
            instance=new AppManager(); 
        } 
        return instance; 
    } 
    /** 
     * 添加Activity到堆栈 
     */
    public void addActivity(Activity activity){ 
        if(activityStack==null){ 
            activityStack=new Stack<Activity>(); 
        } 
        activityStack.add(activity); 
    } 
    /** 
     * 获取当前Activity(堆栈中最后一个压入的) 
     */
    public Activity currentActivity(){ 
        Activity activity=activityStack.lastElement(); 
        return activity; 
    } 
    /** 
     * 结束当前Activity(堆栈中最后一个压入的) 
     */
    public void finishActivity(){ 
        Activity activity=activityStack.lastElement(); 
        if(activity!=null){ 
            activity.finish(); 
            activity=null; 
        } 
    } 
    /** 
     * 结束指定的Activity 
     */
    public void finishActivity(Activity activity){ 
        if(activity!=null){ 
            activityStack.remove(activity); 
            activity.finish(); 
            activity=null; 
        } 
    } 
    /** 
     * 结束指定类名的Activity 
     */
    public void finishActivity(Class<?> cls){ 
        for (Activity activity : activityStack) { 
            if(activity.getClass().equals(cls) ){ 
                finishActivity(activity); 
            } 
        } 
    } 
    /** 
     * 结束所有Activity 
     */
    public void finishAllActivity(){ 
        for (int i = 0, size = activityStack.size(); i < size; i++){ 
            if (null != activityStack.get(i)){ 
                activityStack.get(i).finish(); 
            } 
        } 
        activityStack.clear(); 
    } 
    /** 
     * 退出应用程序 
     */
    public void AppExit(Context context) { 
        try { 
            finishAllActivity(); 
            ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
            activityMgr.restartPackage(context.getPackageName()); 
            System.exit(0); 
        } catch (Exception e) {    } 
    } 
}