Activity统一堆栈管理

Activity管理类:AppManager

public class AppManager {
    private static Stack activityStack;
    private static AppManager instance;

    /**
    * 单一实例
    */
    public static AppManager getInstance(){
        if (instance == null){
            instance = new AppManager();
        }
        return instance;
    }

    /**
    * 添加Activity到堆栈
    */
    public void addActivity(Activity activity){
        if (activityStack == null){
            activityStack = new Stack<>();
        }
        activityStack.add(activity);
    }

    /**
    * 获取当前Activity(堆栈中最后一个压入的)
    */
    public Activity currentActivity(){
        return activityStack.lastElement();
    }

    /**
    * 结束当前Activity(堆栈中最后一个压入的)
    */
    public void finishActivity(){
        Activity activity = activityStack.pop();
        activity.finish();
    }

    /**
    * 结束指定Activity
    */
    public void finishActivity(Activity activity){
        if (activity != null){
            activityStack.remove(activity);
            if (!activity.isFinishing()){
                activity.finish();
            }
        }
    }

    /**
    * 结束指定类名的Activity
    */
    public void finishActivity(Class cls){
        for (Activity activity : activityStack){
            if (activity.getClass().equals(cls)){
                finishActivity(activity);
            }
        }
    }

    /**
    * 结束所有的Activity
    */
    public void finishAllActivity(){
        for (Activity activity : activityStack){
            if (activity != null){
                activity.finish();
            }
        }
        activityStack.clear();
    }

    /**
    * 退出应用程序
    */
    public void AppExit(Context context){
        finishAllActivity();
        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        activityManager.killBackgroundProcesses(context.getPackageName());
        System.exit(0);
    }
}

Activity基类:BaseActivity

public class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //初始化时将Activity压入管理栈
        AppManager.getInstance().addActivity(this);
    }
}