android Activity管理器

android Activity管理器

应用场景

管理活动的Activity,可实现将一个activity添加到管理器、得到保存在管理器中的Activity对象、返回管理器的Activity是否为空、关闭所有活动的Activity除了指定的一个之外、移除Activity对象,如果它未结束则结束它、返回管理器中是否包含指定的名字,用于android开发时相当有用,例如我们在开发界面跳转比较频繁、定义android的HOME键、返回键如何跳转页面等项目时非常有用。

代码实现

/**
 * @ClassName: ActivityTaskManager
 * @Description: TODO(Activity管理器)
 * @author lhn
 * @date 2016-4-15 上午10:34:10
 */
public class ActivityTaskManager {
	// 创建ActivityTaskManager
	private static ActivityTaskManager activityTaskManager = null;
	// 创建activity管理Map
	private HashMap<String, Activity> activityMap = null;

	/**
	 * @Description:返回Activity管理器的唯一实例对象(采用单例的实现模式)
	 * @return ActivityTaskManager(Activity管理器的唯一实例对象)
	 */
	public static synchronized ActivityTaskManager getInstance() {
		// synchronized方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.
		// 这时,线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,
		// 当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入.
		if (activityTaskManager == null) {
			activityTaskManager = new ActivityTaskManager();
		}

		return activityTaskManager;

	}

	/**
	 * @Description:向Activity管理器中添加Activity
	 * @param String
	 *            actName(Activity的名称) Activity activity(要存入的Activity)
	 * @return void
	 */
	public void addActivity(String actName, Activity activity) {
		// 先判断是否已经存在这个activity
		if (!activityMap.containsKey(actName)) {
			// 没有存在放入该activity
			activityMap.put(actName, activity);
		} else {
			// 已经存在,则结束要存入的activity
			activity.finish();
		}
	}

	/**
	 * @Description 得到保存在管理器中的Activity对象。
	 * @param String
	 *            actName(Activity的名称)
	 * @return Activity
	 */
	public Activity getActivity(String name) {

		return activityMap.get(name);

	}

	/**
	 * @Description 返回管理器的Activity是否为空。
	 * 
	 * @return 当且当管理器中的Activity对象为空时返回true,否则返回false。
	 */

	public boolean isEmpty() {

		return activityMap.isEmpty();

	}

	/**
	 * @Description 返回管理器中Activity对象的个数。
	 * 
	 * @return 管理器中Activity对象的个数。
	 */

	public int size() {

		return activityMap.size();

	}


	/**
	 * @Description:removeActivity将不用的Activity移除
	 * @param String
	 *            actName(Activity的名称)
	 * @return void
	 */
	public void removeActivity(String actName) {
		// 得到该Activity的实例
		Activity activity = activityMap.get(actName);
		// 如果不为null,则结束掉该activity
		if (activity != null)
			activity.finish();

		// 在activityMap中移除
		activityMap.remove(actName);
	}

	/**
	 * @Description:finishAll结束掉所有Activity
	 * @return void
	 */
	public void finishAll() {
		// 遍历所有的Activity找到后执行finish
		for (String actName : activityMap.keySet()) {
			Activity activity = activityMap.get(actName);
			if (!activity.isFinishing()) {
				activity.finish();
			}
		}
		// 完全退出app,否则还有进程在后台
		System.exit(0);
	}

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值