实际应用中,如何管理多个Activity?
2015-11-16 17:20
225 查看
手动管理多个Activity
这里只是浅显的介绍一下平时用的处理方式,如果有其他更好的方法也请大神指点。
ArrayList ,我们可以在Application 增加Add、remove、finish方法,来实现对多个Acticity的统一管理。逻辑与Stack相似,基本可以参考2的代码。
下面这种 Stack 基本逻辑一样。
下面直接代码:
这里只是浅显的介绍一下平时用的处理方式,如果有其他更好的方法也请大神指点。
ArrayList ,我们可以在Application 增加Add、remove、finish方法,来实现对多个Acticity的统一管理。逻辑与Stack相似,基本可以参考2的代码。
下面这种 Stack 基本逻辑一样。
下面直接代码:
public class AppManager { private static Stack<Activity> mActivityStack; private static AppManager mAppManager; private AppManager() { } /** * 单一实例 */ public static AppManager getInstance() { if (mAppManager == null) { mAppManager = new AppManager(); } return mAppManager; } /** * 添加Activity到堆栈 */ public void addActivity(Activity activity) { if (mActivityStack == null) { mActivityStack = new Stack<Activity>(); } mActivityStack.add(activity); } /** * 获取栈顶Activity(堆栈中最后一个压入的) */ public Activity getTopActivity() { Activity activity = mActivityStack.lastElement(); return activity; } /** * 结束栈顶Activity(堆栈中最后一个压入的) */ public void killTopActivity() { Activity activity = mActivityStack.lastElement(); killActivity(activity); } /** * 结束指定的Activity */ public void killActivity(Activity activity) { if (activity != null) { mActivityStack.remove(activity); activity.finish(); activity = null; } } /** * 结束指定类名的Activity */ public void killActivity(Class<?> cls) { for (Activity activity : mActivityStack) { if (activity.getClass().equals(cls)) { killActivity(activity); } } } /** * 结束所有Activity */ public void killAllActivity() { for (int i = 0, size = mActivityStack.size(); i < size; i++) { if (null != mActivityStack.get(i)) { mActivityStack.get(i).finish(); } } mActivityStack.clear(); } /** * 退出应用程序 */ public void AppExit(Context context) { try { killAllActivity(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.restartPackage(context.getPackageName()); System.exit(0); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- java获取当前时间、当前零点零分零秒、昨天这一时间
- 為什麼網站的根目錄最好有 favicon.ico 和 robots.txt 存在?
- 日志实时分析统计平台二 ----- flume平台搭建配置
- 栈和队列1 – 数据结构和算法23
- 栈和队列2 – 数据结构和算法24
- activemq 三种索引的使用分析
- Oracle函数汇总
- java日期类封装
- 数据库导入导出
- iOS Block全面分析
- msp430系统时钟
- android MediaStore 视频以及视频缩略图问题记录
- Centos vim python tab键为4个空格
- Java引用数据类型之数组
- 第11周项目1—验证算法(2)二叉树构造算法的验证
- 通过自定义SparkSQL外部数据源实现SparkSQL读取HBase
- 第十周 项目1 二叉树算法库
- ssh免密码登陆其他机器
- 线性表17 – 数据结构和算法22
- PyCharm教程(一)Hello World