public class ActivityManager {
private static CopyOnWriteArrayList<Activity> mActivityStack;
private static ActivityManager mDubActivityManager;
private DubActivityManager() {
}
public static ActivityManager getInstance() {
if (mDubActivityManager == null) {
mDubActivityManager = new DubActivityManager();
}
return mDubActivityManager;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity) {
if (mActivityStack == null) {
mActivityStack = new CopyOnWriteArrayList<Activity>();
}
mActivityStack.add(activity);
}
/**
* 结束指定的Activity
*/
public void killActivity(Activity activity) {
try {
if (activity != null && mActivityStack.size() > 0) {
mActivityStack.remove(activity);
activity.finish();
activity = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 结束指定类名的Activity
*/
public void killActivity(Class<?> cls) {
for (Activity activity : mActivityStack) {
if (activity.getClass().equals(cls)) {
killActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void killAllActivity() {
if(null != mActivityStack && mActivityStack.size() > 0){
for (int i = 0, size = mActivityStack.size(); i < size; i++) {
if (null != mActivityStack.get(i)) {
mActivityStack.get(i).finish();
}
}
mActivityStack.clear();
}
}
/**
* 结束所有Activity除了Login
*/
/*public void killAllActivityNoLogin() {
for (int i = 0, size = mActivityStack.size(); i < size; i++) {
if (null != mActivityStack.get(i)) {
if (mActivityStack.get(i).getClass() != LoginActivity.class) {
mActivityStack.get(i).finish();
}
}
}
mActivityStack.clear();
}*/
/**
* 退出应用程序
*/
@SuppressWarnings("deprecation")
public void AppExit(Context context) {
try {
killAllActivity();
ActivityManager activityMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}