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(); } }