• AppManager类,管理Activity和App


    转自:http://blog.csdn.net/ytjd926/article/details/12951243

    	@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);
    	}
    
    package net.oschina.app;
    
    import java.util.Stack;
    
    import android.app.Activity;
    import android.app.ActivityManager;
    import android.content.Context;
    
    /**
     * 应用程序Activity管理类:用于Activity管理和应用程序退出
     * @author liux (http://my.oschina.net/liux)
     * @version 1.0
     * @created 2012-3-21
     */
    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();
    	}
    	/**
    	 * 退出应用程序
    	 */
    	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) {	}
    	}
    }
    
  • 相关阅读:
    十道海量数据处理面试题与十个方法大总结
    TopK的一个简单实现
    Spark1.0.0 学习路线指导
    Apache Spark源码走读之1 -- Spark论文阅读笔记
    倾情大奉送--Spark入门实战系列
    分布式发布订阅消息系统 Kafka 架构设计
    hive入门学习线路指导
    (5.3.1)数据库迁移——数据库迁移解决孤立用户与权限问题
    Shell初学(八)linux下的ACL
    Shell初学(七)linux账户管理/群组管理
  • 原文地址:https://www.cnblogs.com/childhooding/p/4516540.html
Copyright © 2020-2023  润新知