通过StackManager对Android应用的Activity进行自己管理的工具类

本文介绍如何使用StackManager工具类实现对Android应用程序中Activity的自定义管理,通过代码示例展示其实现方式。

通过StackManager对Android应用的Activity进行自己管理的工具类

直接上代码   

package com.example.test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Stack;

import android.app.Activity;

public class StackManager {
	//栈管理器 StackManager实例
	private static StackManager instance;
	//Stack 是一种后进先出的数据结构(LIFO),存放了一系列对象的栈。用户可以对栈执行pop和push操作,哪怕是null对象也行,而且Stack没有大小的显示
	Stack<Activity> activityStack = new Stack<Activity>();
	Map<String, Activity> mapStack = new HashMap<String, Activity>();

	/**
	 * 单例模式 获取实例
	 * @return
	 */
	public synchronized static StackManager getInstance() {
		if (instance == null)
			instance = new StackManager();
		return instance;
	}

	/**
	 * 向Stack中添加Activity 为设置退出准备
	 * 
	 * @param activity
	 */
	public void pushToStack(Activity activity) {
		if (activity != null)
			activityStack.add(activity);
	}

	/**
	 * 清空栈中所有的Activity 
	 */
	public void popAllForExit() {
		for (Activity e : activityStack)
			e.finish();
		activityStack.clear();
	}

	/**
	 * 向Stack里添加Activity,为导航区做准备
	 * 
	 * @param key
	 * @param activity
	 */
	public void pushToMapStack(String key, Activity activity) {
		if (!mapStack.containsKey(key))
			mapStack.put(key, activity);
	}

	public void popAllForStartActivity(String key) {
		Iterator<String> iterator = mapStack.keySet().iterator();
		while (iterator.hasNext()) {
			String k = iterator.next();
			if (!k.equals(key)) {
				mapStack.get(k).finish();
				mapStack.remove(k);
				iterator = mapStack.keySet().iterator();
			}
		}
	}
}
项目需要的时候直接加入就OK。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值