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

 /*
* @(#)ActivityManager.java version: 0.1
* Date:2012-2-3
*
* Copyright (c) 2011 CFuture09, Institute of Software,
* Guangdong Ocean University, Zhanjiang, GuangDong, China.
* All rights reserved.
*/
package com.sinaapp.msdxblog.androidkit.ui.util; import java.util.HashMap; import java.util.Set; import android.app.Activity; /**
* 一个Activity管理器管理活动的Activity。
*
* @author Geek_Soledad (66704238@51uc.com)
*/
public class ActivityTaskManager { private static ActivityTaskManager activityTaskManager = null;
private HashMap<String, Activity> activityMap = null; private ActivityTaskManager() {
activityMap = new HashMap<String, Activity>();
} /**
* 返回activity管理器的唯一实例对象。
*
* @return
*/
public static synchronized ActivityTaskManager getInstance() {
if (activityTaskManager == null) {
activityTaskManager = new ActivityTaskManager();
}
return activityTaskManager;
} /**
* 将一个activity添加到管理器。
*
* @param activity
*/
public Activity putActivity(String name, Activity activity) {
return activityMap.put(name, activity);
} /**
* 得到保存在管理器中的Activity对象。
*
* @param name
* @return
*/
public Activity getActivity(String name) {
return activityMap.get(name);
} /**
* 返回管理器的Activity是否为空。
*
* @return 当且当管理器中的Activity对象为空时返回true,否则返回false。
*/
public boolean isEmpty() {
return activityMap.isEmpty();
} /**
* 返回管理器中Activity对象的个数。
*
* @return 管理器中Activity对象的个数。
*/
public int size() {
return activityMap.size();
} /**
* 返回管理器中是否包含指定的名字。
*
* @param name
* 要查找的名字。
* @return 当且仅当包含指定的名字时返回true, 否则返回false。
*/
public boolean containsName(String name) {
return activityMap.containsKey(name);
} /**
* 返回管理器中是否包含指定的Activity。
*
* @param activity
* 要查找的Activity。
* @return 当且仅当包含指定的Activity对象时返回true, 否则返回false。
*/
public boolean containsActivity(Activity activity) {
return activityMap.containsValue(activity);
} /**
* 关闭所有活动的Activity。
*/
public void closeAllActivity() {
Set<String> activityNames = activityMap.keySet();
for (String string : activityNames) {
finisActivity(activityMap.get(string));
}
activityMap.clear();
} /**
* 关闭所有活动的Activity除了指定的一个之外。
*
* @param nameSpecified
* 指定的不关闭的Activity对象的名字。
*/
public void closeAllActivityExceptOne(String nameSpecified) {
Set<String> activityNames = activityMap.keySet();
Activity activitySpecified = activityMap.get(nameSpecified);
for (String name : activityNames) {
if (name.equals(nameSpecified)) {
continue;
}
finisActivity(activityMap.get(name));
}
activityMap.clear();
activityMap.put(nameSpecified, activitySpecified);
} /**
* 移除Activity对象,如果它未结束则结束它。
*
* @param name
* Activity对象的名字。
*/
public void removeActivity(String name) {
Activity activity = activityMap.remove(name);
finisActivity(activity);
} private final void finisActivity(Activity activity) {
if (activity != null) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}

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

andriod一次退出所有的Activity的更多相关文章

  1. 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)

      退出Activity注册Android遍历   目录(?)[+] 前言 知识结构 具体方案 方案1 方法采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序多activity 方案2 方 ...

  2. Android中使用广播机制退出多个Activity

    谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多. 在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法. ...

  3. 从注冊流程 分析怎样安全退出多个Activity 多种方式(附DEMO)

    前言 因为一个同学问到我怎样依照一个流程走好之后回到首页.我曾经看到过4个解决方式,后来发现有做个记录和总结的必要,就写了这篇博文. (之前看小强也写过一篇,这里通过自身的分析完整的总结一下下面6种方 ...

  4. Android中退出多个Activity的两个经典方法

    这里介绍两种方法:一种把每个activity记住,然后逐一干掉:另一种思路是使用广播. 方法一.用list保存activity实例,然后逐一干掉 上代码: import java.util.Linke ...

  5. 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)

    前言   由于一个同学问到我如何按照一个流程走好之后回到首页,我以前看到过4个解决方案,后来发现有做个记录和总结的必要,就写了这篇博文.(之前看小强也写过一篇,这里通过自身的分析完整的总结一下以下6种 ...

  6. 如何安全退出多个Activity

    我们在项目开发的时候可能会遇到安全退出应用的场景,如何能够安全退出多个Activity?网上有很多方法,如下: 1.抛异常退出 该方法通过抛异常,使程序Force Close.验证可以,但是,需要解决 ...

  7. 退出多个activity的方法

    1.使用List集合方式 用list保存activity实例,然后逐一干掉 import java.util.LinkedList; import java.util.List; import and ...

  8. 转: WebView载入一个网页 但是退出对应的activity时, 声音、视频无法停止播放 解决方案(未验证)

    1. webview.onPause 2. webview独立进程,杀进程3.小场景可以不用这么复杂有个技巧就是在activity退出的时候加载一个空白页面,就能解决

  9. Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失)

    一.需求触发场景: 项目中需要出发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需 ...

随机推荐

  1. Linux下C语言高手成长路线(转载)

    建议学习路径: 首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了. 然后看看<C程序设计语言>K&R,这样 ...

  2. mac安装mongodb

    一,安装方法1 ,下载mongodb 1,官网下载mongodb程序 https://www.mongodb.org/downloads#production​ 2,解压后启动mongodb服务 下载 ...

  3. ASP.NET原理分析

    ASP.NET请求与处理全过程分析 1.用户向服务器的某IP端口发送请求,此端口通过Http.sys来管理,请求报文被Http.sys接收,Http.sys在注册表中找能处理这个请求类型的应用程序,最 ...

  4. 利用WCF技术降低系统之间的耦合度

    为了降低本系统各个组件之间的耦合度,本系统将BLL层采用WCF技术发布为Web Service,以供UI层调用. 前面我们已经介绍过,为什么UI层不直接调用BLL层,而是要经过UI->Servi ...

  5. asp.net—缓存

    1.页面缓存 要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可. <%@ OutputCache CacheProfile=" " NoStore= ...

  6. 遇到了IAR烧写程序出错,附解决办法The stack plug-in failed to set a breakpoint on "main"

    今天做无线串口调试的时候用IAR7.51往CC2530无线模块烧程序的时候遇到了问题: 先是下载过程中有许多警告,然后就是提示无法跳断点,找不到main方法,每次烧程序都出现: The stack p ...

  7. java之BASE64加解密

    1.简介 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到. 注:位于jdk的java.util包中. 2. ...

  8. JavaScript与DOM

    文档对象模型Document Object Model DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API.Javascript和D ...

  9. 传统BIOS+UEFI 系统引导修复

    一.    去网上下载一款pe软件:BIOS+UEFI引导修复工具这个软件支持传统bios和最新的UEFI引导(1)进入PE环境(win也可以,不过引导损坏一般不能进win),打开软件         ...

  10. 安装JBPM6运行环境(JBPM6学习之二)

    安装Eclipse插件成功后,需要配置JBPM6的运行环境: 1. 第一步先将下载的jbpm6目录中的“jbpm-6.0.1.Final-bin.zip”找到,并解压缩到D盘根目录备用. 2. 第二步 ...