android 关闭所有Activity

来源:互联网 发布:免费背英语单词软件 编辑:程序博客网 时间:2024/05/16 12:26

转载 : http://java–hhf.iteye.com/blog/1826880

  1. 如果想要关闭Activity,可以调用
    this.finish();方法,虚拟机会将此Activity放置在回台,不会立即回收其资源.
    而 调用android.os.Process.killProcess(android.os.Process.myPid());
    或者调用System.exit(0);会关闭此Activity,
    并且会立即回收其资源.并且不会调动组件的生命周期方法.除非手动的在代码的调动生命周期的方法.

2.Activity里,想要一次性关闭所有的activity创建一个专门用来处理activity的类

/** * 管理所有的Activity * @author user * */public class ActivityManager {    private static ActivityManager instance;    private Stack<Activity> activityStack;    private ActivityManager(){    }    public static ActivityManager getInstance(){        if(instance==null){            instance=new ActivityManager();        }        return instance;    }    //压入栈    public void pushActivity(Activity activity){        if(activityStack==null){            activityStack=new Stack<Activity>();        }        activityStack.push(activity);    }    /*     * 移除栈     */    public void popActivity(Activity activity){        if(activityStack!=null&&activityStack.size()>0){            if(activity!=null){                activity.finish();                activityStack.remove(activity);                activity=null;            }        }    }    /*     * 关闭所有的activity     */    public void exit(){        if(activityStack!=null){            while(activityStack.size()>0){                Activity activity=activityStack.peek();                if(activity==null){                    break;                }                popActivity(activity);            }        }        Log.v("qin", "activity完全退出,还剩余:"+activityStack.size());    }    /*     * 获取元素个数     */    public int getCount(){        if(activityStack!=null){            return activityStack.size();        }return 0;    }}

然后在每次创建的时候将其压入栈中,每次销毁的时候将其退出栈中.
通常的实践是创建一个基类来处理代码.在创建的时候将实例压入栈,在销毁的时候将实例退出栈.

0 0