AppManager管理Activity工具类

我们在开发过程中经常需要操作activity的跳转与关闭,所以通过这个工具类,可以方便的去管理你所创建的activity。首先,该类肯定要是单例的,所以采用单例模式生成该唯一的对象,关于单例模式可以转到:

http://blog.csdn.net/jason0539/article/details/23297037

创建Activity的时候,在OnCreate方法中初始化AppManager类(另一种处理方式是,自己新建一个BaseActivity在这里面做初始化处理,自己的activity类去继承BaseActivity,这样就可以直接使用AppManager了),在每个Activity里面都调用AppManager里面的添加方法,将每一个Activity都添加到栈里面去。这样AppManager就可以管理这些拥有的activity。具体代码如下:

APPManager

package com.lzy.gesture.utils;

import java.util.Stack;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

/**
 * @author luzhenyu
 * @descrip <p>
 *          应用程序Activity管理类:用于Activity管理和应用程序退出
 *          </p>
 */
public class AppManager {

	private static Stack<Activity> activityStack;
	private static AppManager instance;

	private AppManager() {
	}

	/**
	 * 单例模式
	 */
	public static AppManager getAppManager() {
		if (instance == null) {
			instance = new AppManager();
		}
		return instance;
	}

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

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

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

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

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

	/**
	 * 结束所有Activity
	 */
	public void finishAllActivity() {
		for (int i = 0, size = activityStack.size(); i < size; i++) {
			if (null != activityStack.get(i)) {
				activityStack.get(i).finish();
			}
		}
		activityStack.clear();
	}

    /**
     * 打开指定的Activity
     * */
	public void openActivity(Context context, Class<?> cls) {
		context.startActivity(new Intent(context, cls));
	}
	
	/**
	 * 打开指定的Activity并带有Bundle传值
	 * */
	public void openActivityWithBundle(Context context, Class<?> cls, Bundle bundle) {
		Intent intent = new Intent(context, cls);
		intent.putExtras(bundle);
		context.startActivity(intent);
	}
/** * 退出应用程序 */public void AppExit(Context context) {try {finishAllActivity();ActivityManager activityMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityMgr.restartPackage(context.getPackageName());System.exit(0);} catch (Exception e) {}}}


—— lovey hy.

你可能感兴趣的:(管理Activity,AppManager)