一、使用集合

先创建一个用于添加activity和销毁activity的集合类:

public class SysApplication extends Application {    private List mList = new LinkedList();    private static SysApplication instance;    private SysApplication() {    }    public synchronized static SysApplication getInstance() {        if (null == instance) {            instance = new SysApplication();        }        return instance;    }    // add Activity    public void addActivity(Activity activity) {        mList.add(activity);    }    public void exit() {        try {            for (Activity activity : mList) {                if (activity != null)                    activity.finish();            }        } catch (Exception e) {            e.printStackTrace();        }    }    //注意:次方法用于垃圾回收,如果手机内存小,或使用虚拟机测试,一定要注释掉这段代码    @Override    public void onLowMemory() {        super.onLowMemory();        System.gc();    }}


在需要集体销毁的Activity的onCreate方法中添加如下代码:

SysApplication.getInstance().addActivity(this);
在需要退出的地方添加如下代码:

SysApplication.getInstance().exit();

二、使用栈

public class ActivityCollector {    private static ActivityCollector instance;    private Stack activityStack;//activity栈    private ActivityCollector() {    }    //单例模式    public static ActivityCollector getInstance() {        if (instance == null) {            instance = new ActivityCollector();        }        return instance;    }    /**     * 清空stack     */    public void clearStack(){        if(activityStack != null){            activityStack.clear();        }    }    //把一个activity压入栈中    public void pushOneActivity(Activity actvity) {        if (activityStack == null) {            activityStack = new Stack();        }        activityStack.add(actvity);        Log.d("MyActivityManager ", "size = " + activityStack.size());    }    //获取栈顶的activity,先进后出原则    public Activity getLastActivity() {        return activityStack.lastElement();    }    //移除一个activity    public void popOneActivity(Activity activity) {        if (activityStack != null && activityStack.size() > 0) {            if (activity != null) {                activity.finish();                activityStack.remove(activity);                activity = null;            }        }    }    //退出所有activity    public void finishAllActivity() {        if (activityStack != null) {            while (activityStack.size() > 0) {                Activity activity = getLastActivity();                if (activity == null) break;                popOneActivity(activity);            }        }    }}


使用方法和第一种类似。


更多相关文章

  1. Android获取屏幕宽度的4种方法
  2. 【Android】Android Layout Binder——根据layout布局文件自动生
  3. Android应用程序进程启动过程的源代码分析(2)
  4. android 开发收银系统,弹出键盘固定界面UI的方法
  5. Android源代码编译
  6. Android优质学习方法
  7. Android TextView各种使用方法
  8. Android应用程序组件Content Provider的启动过程源代码分析(6)
  9. android常用代码片段

随机推荐

  1. Android(安卓)4.2 Input 流程分析
  2. TabHost、TabWidgt、Tabcontent之间的关
  3. android 自定义dialog 带动画的
  4. 修改状态栏(StatusBar)图标(icon)(定制自
  5. Android实现双模(CDMA/GSM)手机短信监听
  6. ViewFlipper 左右滑动效果
  7. Android游戏开发菜鸟之路(三)
  8. android自定义view控件
  9. android按键映射
  10. Linux,maven,redis,android,java,yum,ant