zoukankan      html  css  js  c++  java
  • 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) {	}
    	}
    }
    
  • 相关阅读:
    Docker镜像仓库的搭建--> Harbor篇
    K8S入门系列之扩展组件 --> Dashboard (五)
    K8S入门系列之必备扩展组件--> coredns(四)
    K8S入门系列之集群二进制部署--> node篇(三)
    K8S入门系列之集群二进制部署--> master篇(二)
    K8S入门系列之集群yum安装-->初试篇(一)
    zabbix 4.2 的安装和设置(mysql57----centos7)
    SVN--服务端安装和设置---centos7
    Docker(二) Dockerfile 使用介绍
    二叉搜索树JavaScript实现
  • 原文地址:https://www.cnblogs.com/childhooding/p/4516540.html
Copyright © 2011-2022 走看看