001.
package
com.example.exceptiondemo;
002.
003.
import
java.util.Stack;
004.
005.
import
android.app.Activity;
006.
import
android.app.ActivityManager;
007.
import
android.content.Context;
008.
009.
/**
010.
*
011.
* @ClassName: net.oschina.app.AppManager
012.
* @Description: Activity管理類:用于管理Activity和退出程序
013.
* @author zhaokaiqiang
014.
* @date 2014-11-2 上午11:27:55
015.
*
016.
*/
017.
public
class
AppManager {
018.
019.
private
static
Stack<Activity> activityStack;
020.
private
static
AppManager instance;
021.
022.
private
AppManager() {
023.
}
024.
025.
/**
026.
* 單一實例
027.
*/
028.
public
static
AppManager getAppManager() {
029.
if
(instance ==
null
) {
030.
instance =
new
AppManager();
031.
}
032.
return
instance;
033.
}
034.
035.
/**
036.
* 添加Activity到堆棧
037.
*/
038.
public
void
addActivity(Activity activity) {
039.
if
(activityStack ==
null
) {
040.
activityStack =
new
Stack<Activity>();
041.
}
042.
activityStack.add(activity);
043.
}
044.
045.
/**
046.
* 獲取當前Activity(堆棧中最后一個壓入的)
047.
*/
048.
public
Activity currentActivity() {
049.
Activity activity = activityStack.lastElement();
050.
return
activity;
051.
}
052.
053.
/**
054.
* 結束當前Activity(堆棧中最后一個壓入的)
055.
*/
056.
public
void
finishActivity() {
057.
Activity activity = activityStack.lastElement();
058.
finishActivity(activity);
059.
}
060.
061.
/**
062.
* 結束指定的Activity
063.
*/
064.
public
void
finishActivity(Activity activity) {
065.
if
(activity !=
null
) {
066.
activityStack.remove(activity);
067.
activity.finish();
068.
activity =
null
;
069.
}
070.
}
071.
072.
/**
073.
* 結束指定類名的Activity
074.
*/
075.
public
void
finishActivity(Class<?> cls) {
076.
for
(Activity activity : activityStack) {
077.
if
(activity.getClass().equals(cls)) {
078.
finishActivity(activity);
079.
}
080.
}
081.
}
082.
083.
/**
084.
* 結束所有Activity
085.
*/
086.
public
void
finishAllActivity() {
087.
for
(
int
i =
0
, size = activityStack.size(); i < size; i++) {
088.
if
(
null
!= activityStack.get(i)) {
089.
activityStack.get(i).finish();
090.
}
091.
}
092.
activityStack.clear();
093.
}
094.
095.
/**
096.
* 退出應用程序
097.
*/
098.
public
void
exitApp(Context context) {
099.
try
{
100.
finishAllActivity();
101.
ActivityManager activityMgr = (ActivityManager) context
102.
.getSystemService(Context.ACTIVITY_SERVICE);
103.
activityMgr.killBackgroundProcesses(context.getPackageName());
104.
System.exit(
0
);
105.
}
catch
(Exception e) {
106.
}
107.
}
108.
}