一个Android Activity管理器,用于管理活动的Activity

本文介绍了一个用于Android开发的Activity管理器类,该类能够帮助开发者有效地管理应用中的多个Activity,包括添加、获取、检查状态、关闭等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 向大家发一个Android Activity管理器,用于管理活动的Activity,可实现将一个activity添加到管理器、得到保存在管理器中的Activity对象、返回管理器的Activity是否为空、关闭所有活动的Activity除了指定的一个之外、移除Activity对象,如果它未结束则结束它、返回管理器中是否包含指定的名字,用于android开发时相当有用:

    001 package com.lurencun.cfuture09.androidkit.util.ui;
    002 import java.util.HashMap;
    003 import java.util.Set;
    004 import android.app.Activity;
    005 /**
    006  * 一个Activity管理器管理活动的Activity。
    007  * @author Geek_Soledad (66704238@51uc.com)
    008  */
    009 public class ActivityTaskManager {
    010     private static ActivityTaskManager activityTaskManager = null;
    011     private HashMap<String, Activity> activityMap = null;
    012     private ActivityTaskManager() {
    013         activityMap = new HashMap<String, Activity>();
    014     }
    015     /**
    016      * 返回activity管理器的唯一实例对象。
    017      * @return ActivityTaskManager
    018      */
    019     public static synchronized ActivityTaskManager getInstance() {
    020         if (activityTaskManager == null) {
    021             activityTaskManager = new ActivityTaskManager();
    022         }
    023         return activityTaskManager;
    024     }
    025     /**
    026      * 将一个activity添加到管理器。
    027      * @param activity
    028      */
    029     public Activity putActivity(String name, Activity activity) {
    030         return activityMap.put(name, activity);
    031     }
    032     /**
    033      * 得到保存在管理器中的Activity对象。
    034      * @param name
    035      * @return Activity
    036      */
    037     public Activity getActivity(String name) {
    038         return activityMap.get(name);
    039     }
    040     /**
    041      * 返回管理器的Activity是否为空。
    042      * @return 当且当管理器中的Activity对象为空时返回true,否则返回false。
    043      */
    044     public boolean isEmpty() {
    045         return activityMap.isEmpty();
    046     }
    047     /**
    048      * 返回管理器中Activity对象的个数。
    049      * @return 管理器中Activity对象的个数。
    050      */
    051     public int size() {
    052         return activityMap.size();
    053     }
    054     /**
    055      * 返回管理器中是否包含指定的名字。
    056      *
    057      * @param name
    058      *            要查找的名字。
    059      * @return 当且仅当包含指定的名字时返回true, 否则返回false。
    060      */
    061     public boolean containsName(String name) {
    062         return activityMap.containsKey(name);
    063     }
    064     /**
    065      * 返回管理器中是否包含指定的Activity。
    066      * @param activity
    067      *            要查找的Activity。
    068      * @return 当且仅当包含指定的Activity对象时返回true, 否则返回false。
    069      */
    070     public boolean containsActivity(Activity activity) {
    071         return activityMap.containsValue(activity);
    072     }
    073     /**
    074      * 关闭所有活动的Activity。
    075      */
    076     public void closeAllActivity() {
    077         Set<String> activityNames = activityMap.keySet();
    078         for (String string : activityNames) {
    079             finisActivity(activityMap.get(string));
    080         }
    081         activityMap.clear();
    082     }
    083     /**
    084      * 关闭所有活动的Activity除了指定的一个之外。
    085      * @param nameSpecified
    086      *            指定的不关闭的Activity对象的名字。
    087      */
    088     public void closeAllActivityExceptOne(String nameSpecified) {
    089         Set<String> activityNames = activityMap.keySet();
    090         Activity activitySpecified = activityMap.get(nameSpecified);
    091         for (String name : activityNames) {
    092             if (!name.equals(nameSpecified)) {
    093                 finisActivity(activityMap.get(name));
    094             }
    095         }
    096         activityMap.clear();
    097         activityMap.put(nameSpecified, activitySpecified);
    098     }
    099     /**
    100      * 移除Activity对象,如果它未结束则结束它。
    101      * @param name
    102      *            Activity对象的名字。
    103      */
    104     public void removeActivity(String name) {
    105         Activity activity = activityMap.remove(name);
    106         finisActivity(activity);
    107     }
    108     /**
    109      * 结束指定的Activity
    110      * @param activity
    111      *            指定的Activity。
    112      */
    113     private final void finisActivity(Activity activity) {
    114         if (activity != null && !activity.isFinishing()) {
    115             activity.finish();
    116         }
    117     }
    118 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值