-
向大家发一个Android Activity管理器,用于管理活动的Activity,可实现将一个activity添加到管理器、得到保存在管理器中的Activity对象、返回管理器的Activity是否为空、关闭所有活动的Activity除了指定的一个之外、移除Activity对象,如果它未结束则结束它、返回管理器中是否包含指定的名字,用于android开发时相当有用:
001
package
com.lurencun.cfuture09.androidkit.util.ui;
002
import
java.util.HashMap;
003
import
java.util.Set;
004
import
android.app.Activity;
005
/**
006
* 一个Activity管理器管理活动的Activity。
007
* @author Geek_Soledad (66704238@51uc.com)
008
*/
009
public
class
ActivityTaskManager {
010
private
static
ActivityTaskManager activityTaskManager =
null
;
011
private
HashMap<String, Activity> activityMap =
null
;
012
private
ActivityTaskManager() {
013
activityMap =
new
HashMap<String, Activity>();
014
}
015
/**
016
* 返回activity管理器的唯一实例对象。
017
* @return ActivityTaskManager
018
*/
019
public
static
synchronized
ActivityTaskManager getInstance() {
020
if
(activityTaskManager ==
null
) {
021
activityTaskManager =
new
ActivityTaskManager();
022
}
023
return
activityTaskManager;
024
}
025
/**
026
* 将一个activity添加到管理器。
027
* @param activity
028
*/
029
public
Activity putActivity(String name, Activity activity) {
030
return
activityMap.put(name, activity);
031
}
032
/**
033
* 得到保存在管理器中的Activity对象。
034
* @param name
035
* @return Activity
036
*/
037
public
Activity getActivity(String name) {
038
return
activityMap.get(name);
039
}
040
/**
041
* 返回管理器的Activity是否为空。
042
* @return 当且当管理器中的Activity对象为空时返回true,否则返回false。
043
*/
044
public
boolean
isEmpty() {
045
return
activityMap.isEmpty();
046
}
047
/**
048
* 返回管理器中Activity对象的个数。
049
* @return 管理器中Activity对象的个数。
050
*/
051
public
int
size() {
052
return
activityMap.size();
053
}
054
/**
055
* 返回管理器中是否包含指定的名字。
056
*
057
* @param name
058
* 要查找的名字。
059
* @return 当且仅当包含指定的名字时返回true, 否则返回false。
060
*/
061
public
boolean
containsName(String name) {
062
return
activityMap.containsKey(name);
063
}
064
/**
065
* 返回管理器中是否包含指定的Activity。
066
* @param activity
067
* 要查找的Activity。
068
* @return 当且仅当包含指定的Activity对象时返回true, 否则返回false。
069
*/
070
public
boolean
containsActivity(Activity activity) {
071
return
activityMap.containsValue(activity);
072
}
073
/**
074
* 关闭所有活动的Activity。
075
*/
076
public
void
closeAllActivity() {
077
Set<String> activityNames = activityMap.keySet();
078
for
(String string : activityNames) {
079
finisActivity(activityMap.get(string));
080
}
081
activityMap.clear();
082
}
083
/**
084
* 关闭所有活动的Activity除了指定的一个之外。
085
* @param nameSpecified
086
* 指定的不关闭的Activity对象的名字。
087
*/
088
public
void
closeAllActivityExceptOne(String nameSpecified) {
089
Set<String> activityNames = activityMap.keySet();
090
Activity activitySpecified = activityMap.get(nameSpecified);
091
for
(String name : activityNames) {
092
if
(!name.equals(nameSpecified)) {
093
finisActivity(activityMap.get(name));
094
}
095
}
096
activityMap.clear();
097
activityMap.put(nameSpecified, activitySpecified);
098
}
099
/**
100
* 移除Activity对象,如果它未结束则结束它。
101
* @param name
102
* Activity对象的名字。
103
*/
104
public
void
removeActivity(String name) {
105
Activity activity = activityMap.remove(name);
106
finisActivity(activity);
107
}
108
/**
109
* 结束指定的Activity
110
* @param activity
111
* 指定的Activity。
112
*/
113
private
final
void
finisActivity(Activity activity) {
114
if
(activity !=
null
&& !activity.isFinishing()) {
115
activity.finish();
116
}
117
}
118
}