Android关闭多个activity
16lz
2021-01-23
一、使用集合
先创建一个用于添加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(); }}
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); } } }}
更多相关文章
- Android获取屏幕宽度的4种方法
- 【Android】Android Layout Binder——根据layout布局文件自动生
- Android应用程序进程启动过程的源代码分析(2)
- android 开发收银系统,弹出键盘固定界面UI的方法
- Android源代码编译
- Android优质学习方法
- Android TextView各种使用方法
- Android应用程序组件Content Provider的启动过程源代码分析(6)
- android常用代码片段