android Activity管理器
android Activity管理器
应用场景
管理活动的Activity,可实现将一个activity添加到管理器、得到保存在管理器中的Activity对象、返回管理器的Activity是否为空、关闭所有活动的Activity除了指定的一个之外、移除Activity对象,如果它未结束则结束它、返回管理器中是否包含指定的名字,用于android开发时相当有用,例如我们在开发界面跳转比较频繁、定义android的HOME键、返回键如何跳转页面等项目时非常有用。
代码实现
/*** @ClassName: ActivityTaskManager* @Description: TODO(Activity管理器)* @author lhn* @date 2016-4-15 上午10:34:10*/
public class ActivityTaskManager {// 创建ActivityTaskManagerprivate static ActivityTaskManager activityTaskManager = null;// 创建activity管理Mapprivate HashMap<String, Activity> activityMap = null;/*** @Description:返回Activity管理器的唯一实例对象(采用单例的实现模式)* @return ActivityTaskManager(Activity管理器的唯一实例对象)*/public static synchronized ActivityTaskManager getInstance() {// synchronized方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.// 这时,线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,// 当前线程(就是在synchronized方法内部的线程)执行完该方法后,别的线程才能进入.if (activityTaskManager == null) {activityTaskManager = new ActivityTaskManager();}return activityTaskManager;}/*** @Description:向Activity管理器中添加Activity* @param String* actName(Activity的名称) Activity activity(要存入的Activity)* @return void*/public void addActivity(String actName, Activity activity) {// 先判断是否已经存在这个activityif (!activityMap.containsKey(actName)) {// 没有存在放入该activityactivityMap.put(actName, activity);} else {// 已经存在,则结束要存入的activityactivity.finish();}}/*** @Description 得到保存在管理器中的Activity对象。* @param String* actName(Activity的名称)* @return Activity*/public Activity getActivity(String name) {return activityMap.get(name);}/*** @Description 返回管理器的Activity是否为空。* * @return 当且当管理器中的Activity对象为空时返回true,否则返回false。*/public boolean isEmpty() {return activityMap.isEmpty();}/*** @Description 返回管理器中Activity对象的个数。* * @return 管理器中Activity对象的个数。*/public int size() {return activityMap.size();}/*** @Description:removeActivity将不用的Activity移除* @param String* actName(Activity的名称)* @return void*/public void removeActivity(String actName) {// 得到该Activity的实例Activity activity = activityMap.get(actName);// 如果不为null,则结束掉该activityif (activity != null)activity.finish();// 在activityMap中移除activityMap.remove(actName);}/*** @Description:finishAll结束掉所有Activity* @return void*/public void finishAll() {// 遍历所有的Activity找到后执行finishfor (String actName : activityMap.keySet()) {Activity activity = activityMap.get(actName);if (!activity.isFinishing()) {activity.finish();}}// 完全退出app,否则还有进程在后台System.exit(0);}}
android Activity管理器相关推荐
- Android布局管理器-使用LinearLayout实现简单的登录窗口布局
场景 Android布局管理器-从实例入手学习相对布局管理器的使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1038389 ...
- 移动开发技术(Android)——实验2 Android布局管理器的应用
移动开发技术(Android)--实验2 Android布局管理器的应用 一.实验目的 二.实验内容 (一)创建一个Android项目,名称为"shiyan0201_专业_×××" ...
- Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面
场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
- Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片
场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
- android活动管理器,Android 中管理所有的 Acyivity 活动
我们在 App 中,通常会打开很多个任务栈,如果我们要退出 App,要点击返回键一步步的退出?有没有更简单的方法吗?答案是有的,我们创建一个 Activity 管理器,来统一管理 Activity. ...
- android sdk无法启动不了,无法启动Android SDK管理器
我无法启动android sdk管理器,我已经正确检查了sdk,jdk路径但无法解决此问题.当我开始在eclipse CONSOL Android SDK中管理器显示这些行:无法启动Android S ...
- android 固件管理器,刷机精灵(原Android固件管理器桌面版)
详细介绍 刷机精灵的前身是固件管理器桌面版.目前刷机精灵已全面重写,它将是一个更为温馨易用和强大的刷机工具.待近期开发完毕后即可开始发布测试,届时希望各位机友持续给力哦! 刷机精灵是一款运行于PC端的 ...
- 【android编程】 第三讲-Android布局管理器
android编程 第三讲 Android布局管理器 文章目录 android编程 第三讲 Android布局管理器 约束布局管理器ConstraintLayout 线性布局管理器LinearLayo ...
- android开发4:Android布局管理器1(线性布局,相对布局RelativeLayout-案例)
控件类概述 View 可视化控件的基类 属性名称 对应方法 描述 android:background setBackgroundResource(int) 设置背景 android:clickabl ...
最新文章
- 两个iphone怎么大量传照片_手机照片删除了怎么恢复?这两个简单方法一看就会,还不收藏?...
- biosrecovery什么意思_BIOS中的每个中文是什么意思
- Spring Boot 1:Introduction
- Nginx只允许域名访问网站,禁止使用IP 访问80,443端口
- 【转】每天一个linux命令(28):tar命令
- php 中文字符串长度_php中计算中文字符串长度、截取中文字符串的函数代码
- atitit.信息安全的控制总结o7
- 按发动机排量征收汽车消费税是不合理的,应该按燃烧室容积征税
- 飞桨黑客马拉松线上收官,线下HACK Together,继续COOL
- 1863: Dinner
- GNSS观测方程及线性组合
- w7系统桌面没有计算机图标不见了,桌面上我的电脑图标不见了怎么办
- 记录设置VSCode加粗字体
- openjudge 1.6.2 陶陶摘苹果
- JavaScript中的escape() 函数
- 2009年 奥巴马胜选演说
- 85 Operations Rules to Live By
- 【UCIe】UCIe Standard 256B Flit for PCIe 6.0 vs. PCIe 6.0 Flit
- Java工程师的职业规划,java迭代器实现原理
- 用到zlib库的程序运行时报错:无法定位程序输入点createfile2于动态链接库KERNEL32.DLL上