package com.anthony.library.base;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import java.util.LinkedList;
import java.util.List;
/**
* Create By Anthony on 2016/1/15
* Class Note:
* use {@link LinkedList} to manage your activity stack
*
*/
public class BaseAppManager {
private static final String TAG = BaseAppManager.class.getSimpleName();
private static BaseAppManager instance = null;
private static List<Activity> mActivities = new LinkedList<Activity>();
private BaseAppManager() {
}
public static BaseAppManager getInstance() {
if (null == instance) {
synchronized (BaseAppManager.class) {
if (null == instance) {
instance = new BaseAppManager();
}
}
}
return instance;
}
public int size() {
return mActivities.size();
}
public synchronized Activity getForwardActivity() {
return size() > 0 ? mActivities.get(size() - 1) : null;
}
public synchronized void addActivity(Activity activity) {
mActivities.add(activity);
}
public synchronized void removeActivity(Activity activity) {
if (mActivities.contains(activity)) {
mActivities.remove(activity);
}
}
public synchronized void clear() {
for (int i = mActivities.size() - 1; i > -1; i--) {
Activity activity = mActivities.get(i);
removeActivity(activity);
activity.finish();
i = mActivities.size();
}
}
public synchronized void clearTop() {
for (int i = mActivities.size() - 2; i > -1; i--) {
Activity activity = mActivities.get(i);
removeActivity(activity);
activity.finish();
i = mActivities.size() - 1;
}
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
clear();
ActivityManager activityMgr =
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.killBackgroundProcesses(context.getPackageName());
System.exit(0);
} catch (Exception e) {
}
}
public boolean isAppExit() {
return mActivities == null || mActivities.isEmpty();
}
}