android 如何管理打开的多个Activity AppManager

废话不多说  直接上代码   没有注释   看不懂得先把代码复制下来 走一遍  还不懂在问我!!!

 

例1.

public final class AppManager {
    private static final String LOG_TAG = AppManager.class.getSimpleName();
    private static Stack<Activity> activityStack;
    private static Stack<Service> serviceStack;
    private static AppManager mInstance;


    public static synchronized AppManager getAppManager() {
        return mInstance == null ? (AppManager.mInstance = new AppManager())
                : mInstance;
    }


    public synchronized void addActivity(Activity activity) {


        if (activityStack == null) {
            activityStack = new Stack();
        }
        activityStack.add(activity);
    }


    public synchronized void addService(Service service) {


        if (serviceStack == null) {
            serviceStack = new Stack();
        }
        serviceStack.add(service);
    }


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


    public void finishActivity() {
        if(activityStack.isEmpty())
            return;
        Activity activity = (Activity) activityStack.lastElement();
        finishActivity(activity);
    }


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


    public void finishActivity(Class<?> cls) {
        List<Activity> removeList = new ArrayList<Activity>();
        for (Activity activity : activityStack) {
            if (activity.getClass().equals(cls)) {
                removeList.add(activity);
            }
        }
        activityStack.removeAll(removeList);
        for (Activity activity : removeList)
            if (activity != null) {
                activity.finish();
                activity = null;
            }
    }


    public void finishWithOut(Activity withOutActivity) {
        List<Activity> removeList = new ArrayList<Activity>();
        for (Activity activity : activityStack) {
            if (activity != withOutActivity) {
                removeList.add(activity);
            }
        }
        activityStack.removeAll(removeList);
        for (Activity activity : removeList)
            if (activity != null) {
                activity.finish();
                activity = null;
            }
    }


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


                ((Activity) activityStack.get(i)).finish();
            }
        }
        activityStack.clear();
    }


    public void finishAllService() {
        if (serviceStack == null)
            return;
        int i = 0;
        for (int size = serviceStack.size(); i < size; i++) {
            if (serviceStack.get(i) != null) {


                ((Service) serviceStack.get(i)).stopSelf();
            }
        }
        serviceStack.clear();
    }


    public void finishAllNotification(Context context) {
        NotificationManager mNotificationManager = (NotificationManager) context
                .getApplicationContext().getSystemService("notification");
        mNotificationManager.cancelAll();
    }


    /**
     * 重新登录
     */
    public void redirectLogin(Context context, Class clazz) {
        List<Activity> removeList = new ArrayList<Activity>();
        for (Activity activity : activityStack) {


            /*
             * if (!(activity instanceof clazz.newInstance())) {
             * removeList.add(activity); }
             */
            if (!(clazz.isInstance(activity))) {
                removeList.add(activity);
            }
        }
        activityStack.removeAll(removeList);
// 如果没有登录过
// if (activityStack.size() == 0) {
// context.startActivity(new Intent(context, clazz));
// }else{
// context.startActivity(new Intent());
// }
        for (Activity activity : removeList)
            if (activity != null) {
                activity.finish();
                activity = null;
            }
        context.startActivity(new Intent(context, clazz));


    }


    public void AppExit(Context context) {
        try {
            finishAllNotification(context);
            finishAllActivity();
            finishAllService();
            Process.killProcess(Process.myPid());
            System.exit(0);
        } catch (Exception e) {


        }
    }
}

例2.简单使用的方法

public class AppManager {
    public static List<Activity> activities = new ArrayList<Activity>();
    //当前显示的activity
    private static Activity currentActivity;

    public static Activity getCurrentActivity() {
        return currentActivity;
    }

    public static void setCurrentActivity(Activity currentActivity) {
        AppManager.currentActivity = currentActivity;
    }

    /**
     * 添加活动
     *
     * @param activity
     */
    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    /**
     * 删除活动
     *
     * @param activity
     */
    public static void reomveActivity(Activity activity) {
        activities.remove(activity);
    }

    /**
     * 删除所有活动
     */
    public static void removeAllActivity() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }
}

 

本屌不屌,不喜勿喷。谢谢!!!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值