• andriod一次退出所有的Activity


    自己实现了一个Activity管理,可以实现一次退出所有的Activity。在Activity启动的时候,将调用里面的put方法,将Activity对象加入进来。在要退出某个activity的时候,将其remove。如果要退出所有的Activity,调用closeAllActivity即可。 

      1 /*
      2  * @(#)ActivityManager.java               version: 0.1 
      3  * Date:2012-2-3
      4  *
      5  * Copyright (c) 2011 CFuture09, Institute of Software, 
      6  * Guangdong Ocean University, Zhanjiang, GuangDong, China.
      7  * All rights reserved.
      8  */
      9 package com.sinaapp.msdxblog.androidkit.ui.util;
     10 
     11 import java.util.HashMap;
     12 
     13 import java.util.Set;
     14 
     15 import android.app.Activity;
     16 
     17 /**
     18  * 一个Activity管理器管理活动的Activity。
     19  * 
     20  * @author Geek_Soledad (66704238@51uc.com)
     21  */
     22 public class ActivityTaskManager {
     23 
     24     private static ActivityTaskManager activityTaskManager = null;
     25     private HashMap<String, Activity> activityMap = null;
     26 
     27     private ActivityTaskManager() {
     28         activityMap = new HashMap<String, Activity>();
     29     }
     30 
     31     /**
     32      * 返回activity管理器的唯一实例对象。
     33      * 
     34      * @return
     35      */
     36     public static synchronized ActivityTaskManager getInstance() {
     37         if (activityTaskManager == null) {
     38             activityTaskManager = new ActivityTaskManager();
     39         }
     40         return activityTaskManager;
     41     }
     42 
     43     /**
     44      * 将一个activity添加到管理器。
     45      * 
     46      * @param activity
     47      */
     48     public Activity putActivity(String name, Activity activity) {
     49         return activityMap.put(name, activity);
     50     }
     51 
     52     /**
     53      * 得到保存在管理器中的Activity对象。
     54      * 
     55      * @param name
     56      * @return
     57      */
     58     public Activity getActivity(String name) {
     59         return activityMap.get(name);
     60     }
     61 
     62     /**
     63      * 返回管理器的Activity是否为空。
     64      * 
     65      * @return 当且当管理器中的Activity对象为空时返回true,否则返回false。
     66      */
     67     public boolean isEmpty() {
     68         return activityMap.isEmpty();
     69     }
     70 
     71     /**
     72      * 返回管理器中Activity对象的个数。
     73      * 
     74      * @return 管理器中Activity对象的个数。
     75      */
     76     public int size() {
     77         return activityMap.size();
     78     }
     79 
     80     /**
     81      * 返回管理器中是否包含指定的名字。
     82      * 
     83      * @param name
     84      *            要查找的名字。
     85      * @return 当且仅当包含指定的名字时返回true, 否则返回false。
     86      */
     87     public boolean containsName(String name) {
     88         return activityMap.containsKey(name);
     89     }
     90 
     91     /**
     92      * 返回管理器中是否包含指定的Activity。
     93      * 
     94      * @param activity
     95      *            要查找的Activity。
     96      * @return 当且仅当包含指定的Activity对象时返回true, 否则返回false。
     97      */
     98     public boolean containsActivity(Activity activity) {
     99         return activityMap.containsValue(activity);
    100     }
    101 
    102     /**
    103      * 关闭所有活动的Activity。
    104      */
    105     public void closeAllActivity() {
    106         Set<String> activityNames = activityMap.keySet();
    107         for (String string : activityNames) {
    108             finisActivity(activityMap.get(string));
    109         }
    110         activityMap.clear();
    111     }
    112 
    113     /**
    114      * 关闭所有活动的Activity除了指定的一个之外。
    115      * 
    116      * @param nameSpecified
    117      *            指定的不关闭的Activity对象的名字。
    118      */
    119     public void closeAllActivityExceptOne(String nameSpecified) {
    120         Set<String> activityNames = activityMap.keySet();
    121         Activity activitySpecified = activityMap.get(nameSpecified);
    122         for (String name : activityNames) {
    123             if (name.equals(nameSpecified)) {
    124                 continue;
    125             }
    126             finisActivity(activityMap.get(name));
    127         }
    128         activityMap.clear();
    129         activityMap.put(nameSpecified, activitySpecified);
    130     }
    131 
    132     /**
    133      * 移除Activity对象,如果它未结束则结束它。
    134      * 
    135      * @param name
    136      *            Activity对象的名字。
    137      */
    138     public void removeActivity(String name) {
    139         Activity activity = activityMap.remove(name);
    140         finisActivity(activity);
    141     }
    142 
    143     private final void finisActivity(Activity activity) {
    144         if (activity != null) {
    145             if (!activity.isFinishing()) {
    146                 activity.finish();
    147             }
    148         }
    149     }
    150 }

    此类已经收录在我的工具包中,地址为:http://code.google.com/p/cfuture-androidkit/ 

  • 相关阅读:
    别人的Linux私房菜(15)磁盘配额与高级文件系统管理
    别人的Linux私房菜(14)Linux账号管理和ACL权限设置
    别人的Linux私房菜(13)学习Shell脚本
    别人的Linux私房菜(12)正则表达式与文件格式化处理
    别人的Linux私房菜(11)认识与学习BASH
    别人的Linux私房菜(10)vim程序编辑器
    别人的Linux私房菜(9)文件与文件系统的压缩
    别人的Linux私房菜(8)Linux磁盘与文件系统管理
    盘点互联网大佬背后的女人,最后一个你肯定认识
    Java工程师学习指南(完结篇)
  • 原文地址:https://www.cnblogs.com/huolongluo/p/6071103.html
Copyright © 2020-2023  润新知