Activity管理类

一、

public class AppManager {
    private static Stack<Activity> activityStack;
    private static AppManager instance;
    public static AppManager getAppManager(){
        if(instance == null){
            instance = new AppManager();
        }
        return instance;
    }

    public void AppExit(Context paramContext){
        try{
            finishAllActivity();
            ((ActivityManager)paramContext.getSystemService(Context.ACTIVITY_SERVICE))
                    .restartPackage(paramContext.getPackageName());
            // 退出JVM(java虚拟机),释放所占内存资源,0表示正常退出(非0的都为异常退出)
            System.exit(0);
            return;
        }catch (Exception e){
            e.printStackTrace();
            return;
        }
    }

    public void addActivity(Activity paramActivity){
        if(activityStack == null){
            activityStack = new Stack<Activity>();
        }
        activityStack.add(paramActivity);
    }

    public Activity currentActivity(){
        return activityStack.lastElement();
    }

    public void finishActivity(){
        finishActivity(activityStack.lastElement());
    }

    public void finishActivity(Activity paramActivity){
        if(paramActivity != null){
            activityStack.remove(paramActivity);
            paramActivity.finish();
        }
    }

    public void finishActivity(Class<?> paramClass){
        for(Activity activity: activityStack){
            if(activity.getClass().equals(paramClass)){
                finishActivity(activity);
            }
        }
    }

    public void finishAllActivity(){
        int j = activityStack.size();
        for(int i = 0; i < j;i++){
            if(activityStack.get(i) != null){
                ((Activity)activityStack.get(i)).finish();
            }
        }
        activityStack.clear();
    }

    public int getStackSize() { return (activityStack != null) ? activityStack.size() : 0; }

    public void removeActivity(Activity paramActivity) {
        if (paramActivity != null)
            activityStack.remove(paramActivity);
    }

}

使用

在BaseActivity#onCreate回调中添加 AppManager.getAppManager().addActivity(this)
获取当前栈顶activity AppManager.getAppManager().currentActivity()
在需要销毁的当前activity的地方调用 AppManager.getAppManager().finishActivity()
在需要销毁指定类别实例的地方调用 AppManager.getAppManager().finishActivity(XXX.class)
在需要销毁指定类别除外的其他实例的地方调用 AppManager.getAppManager().finishOtherActivity(XXX.class)
退出应用调用 AppManager.getAppManager().AppExit(context)

二、



import android.app.Activity;
import android.os.Process;
import android.support.v4.app.Fragment;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Stack;

public class AppManagerUtils {
    public static final long MILLISECONDS = 1000L;
    private static Stack<Activity> mActivityStack;
    private static Stack<Fragment> mFragmentStack;
    private static List<AppManagerUtils.ExitCallback> exitCallbacks;

    private AppManagerUtils() {
        exitCallbacks = new ArrayList();
    }

    public static AppManagerUtils getAppManager() {
        return AppManagerUtils.Instance.INSTANCE;
    }

    public static Stack<Activity> getActivityStack() {
        return mActivityStack;
    }

    public static Stack<Fragment> getFragmentStack() {
        return mFragmentStack;
    }

    public static Activity getActivity(Class<?> cls) {
        if (mActivityStack != null) {
            Iterator var1 = mActivityStack.iterator();

            while(var1.hasNext()) {
                Activity activity = (Activity)var1.next();
                if (activity.getClass().equals(cls)) {
                    return activity;
                }
            }
        }

        return null;
    }

    public void addActivity(Activity activity) {
        if (mActivityStack == null) {
            mActivityStack = new Stack();
        }

        mActivityStack.add(activity);
    }

    public void removeActivity(Activity activity) {
        if (activity != null && mActivityStack != null) {
            mActivityStack.remove(activity);
        }

    }

    public void addExitCallback(AppManagerUtils.ExitCallback exitCallback) {
        if (exitCallbacks != null) {
            exitCallbacks.add(exitCallback);
        }

    }

    public void removeExitCallback(AppManagerUtils.ExitCallback exitCallback) {
        if (exitCallbacks != null) {
            exitCallbacks.remove(exitCallback);
        }

    }

    public void cleanAllExitCallback() {
        if (exitCallbacks != null) {
            exitCallbacks.clear();
        }

    }

    public boolean hasActivity() {
        return mActivityStack != null ? mActivityStack.isEmpty() : false;
    }

    public Activity currentActivity() {
        if (mActivityStack != null) {
            Activity activity = (Activity)mActivityStack.lastElement();
            return activity;
        } else {
            return null;
        }
    }

    public void finishActivity() {
        if (mActivityStack != null) {
            Activity activity = (Activity)mActivityStack.lastElement();
            this.finishActivity(activity);
        }

    }

    public void finishActivity(Activity activity) {
        if (activity != null && !activity.isFinishing()) {
            activity.finish();
        }

    }

    public void finishActivity(Class<?> cls) {
        if (mActivityStack != null) {
            Iterator var2 = mActivityStack.iterator();

            while(var2.hasNext()) {
                Activity activity = (Activity)var2.next();
                if (activity.getClass().equals(cls)) {
                    this.finishActivity(activity);
                    break;
                }
            }
        }

    }

    public void finishAllActivity() {
        if (exitCallbacks != null && mActivityStack != null) {
            int i = 0;

            for(int size = mActivityStack.size(); i < size; ++i) {
                if (null != mActivityStack.get(i)) {
                    this.finishActivity((Activity)mActivityStack.get(i));
                }
            }

            mActivityStack.clear();
        }

    }

    public void addFragment(Fragment fragment) {
        if (mFragmentStack == null) {
            mFragmentStack = new Stack();
        }

        mFragmentStack.add(fragment);
    }

    public void removeFragment(Fragment fragment) {
        if (fragment != null) {
            mFragmentStack.remove(fragment);
        }

    }

    public boolean isFragment() {
        return mFragmentStack != null ? mFragmentStack.isEmpty() : false;
    }

    public Fragment currentFragment() {
        if (mFragmentStack != null) {
            Fragment fragment = (Fragment)mFragmentStack.lastElement();
            return fragment;
        } else {
            return null;
        }
    }

    public void appExit() {
        try {
            this.finishAllActivity();
            Process.killProcess(Process.myPid());
            System.exit(10);
        } catch (Exception var2) {
            if (mActivityStack != null) {
                mActivityStack.clear();
            }

            var2.printStackTrace();
        }

    }

    public void callbackExitCallbacks() {
        if (exitCallbacks != null && exitCallbacks.size() > 0) {
            for(int i = 0; i < exitCallbacks.size(); ++i) {
                AppManagerUtils.ExitCallback exitCallback = (AppManagerUtils.ExitCallback)exitCallbacks.get(i);
                if (exitCallback != null) {
                    exitCallback.callback();
                }
            }
        }

    }

    public Activity popActivity() {
        return mActivityStack != null && !mActivityStack.empty() ? (Activity)mActivityStack.pop() : null;
    }

    private static class Instance {
        public static AppManagerUtils INSTANCE = new AppManagerUtils();

        private Instance() {
        }
    }

    public interface ExitCallback {
        void callback();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值