• 【Android工具类】Activity管理工具类AppManager


        转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

        

    import java.util.Stack;
    
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.Context;
    
    /**
     * 
     * @ClassName: com.qust.myutils.AppManager
     * @Description: Activity管理类:用于管理Activity和退出程序
     * @author zhaokaiqiang
     * @date 2014-11-20 下午4:53:33
     * 
     */
    public class AppManager {
    
    	// Activity栈
    	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; i < activityStack.size(); i++) {
    			if (null != activityStack.get(i)) {
    				activityStack.get(i).finish();
    			}
    		}
    		activityStack.clear();
    	}
    
    	/**
    	 * 退出应用程序
    	 */
    	public void AppExit(Context context) {
    		try {
    			finishAllActivity();
    			ActivityManager activityMgr = (ActivityManager) context
    					.getSystemService(Context.ACTIVITY_SERVICE);
    			activityMgr.killBackgroundProcesses(context.getPackageName());
    			System.exit(0);
    		} catch (Exception e) {
    		}
    	}
    }


        这个类是从oschina的androidclient开源项目中抽取出来的,主要用于Activity的管理和应用程序的退出。

        假设我们在退出程序的时候,调用AppManager.AppExit(Context)就能够将栈中全部的Activity实例销毁。

        假设我们要更加方便的是用这个管理类,推荐创建一个Activity的基类,并在onCreate和onDestory方法里面调用相应的方法,这样我们就不须要单独在某个Activity里面加入反复逻辑。精简代码。比方像以下这样

    /**
    	 * 对context进行初始化,并将当前的Activity加入到堆栈中,便于管理
    	 */
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		// 加入Activity到堆栈
    		AppManager.getAppManager().addActivity(this);
    	}
    
    	@Override
    	protected void onDestroy() {
    		super.onDestroy();
    		// 结束Activity&从堆栈中移除
    		AppManager.getAppManager().finishActivity(this);
    	}




  • 相关阅读:
    如何判断栈的增长方向
    时间复杂度
    shell基础part3
    shell基础part2
    shell基础part2
    linux基础part5
    linux基础part4
    linux基础part3
    linux基础part2
    shell基础part1
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5069743.html
Copyright © 2020-2023  润新知