andriod一次退出所有的Activity
自己实现了一个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的更多相关文章
- 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)
退出Activity注册Android遍历 目录(?)[+] 前言 知识结构 具体方案 方案1 方法采用FLAG_ACTIVITY_CLEAR_TOP退出整个程序多activity 方案2 方 ...
- Android中使用广播机制退出多个Activity
谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多. 在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法. ...
- 从注冊流程 分析怎样安全退出多个Activity 多种方式(附DEMO)
前言 因为一个同学问到我怎样依照一个流程走好之后回到首页.我曾经看到过4个解决方式,后来发现有做个记录和总结的必要,就写了这篇博文. (之前看小强也写过一篇,这里通过自身的分析完整的总结一下下面6种方 ...
- Android中退出多个Activity的两个经典方法
这里介绍两种方法:一种把每个activity记住,然后逐一干掉:另一种思路是使用广播. 方法一.用list保存activity实例,然后逐一干掉 上代码: import java.util.Linke ...
- 从注册流程 分析如何安全退出多个Activity 多种方式(附DEMO)
前言 由于一个同学问到我如何按照一个流程走好之后回到首页,我以前看到过4个解决方案,后来发现有做个记录和总结的必要,就写了这篇博文.(之前看小强也写过一篇,这里通过自身的分析完整的总结一下以下6种 ...
- 如何安全退出多个Activity
我们在项目开发的时候可能会遇到安全退出应用的场景,如何能够安全退出多个Activity?网上有很多方法,如下: 1.抛异常退出 该方法通过抛异常,使程序Force Close.验证可以,但是,需要解决 ...
- 退出多个activity的方法
1.使用List集合方式 用list保存activity实例,然后逐一干掉 import java.util.LinkedList; import java.util.List; import and ...
- 转: WebView载入一个网页 但是退出对应的activity时, 声音、视频无法停止播放 解决方案(未验证)
1. webview.onPause 2. webview独立进程,杀进程3.小场景可以不用这么复杂有个技巧就是在activity退出的时候加载一个空白页面,就能解决
- Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失)
一.需求触发场景: 项目中需要出发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需 ...
随机推荐
- 知识梳理HTML篇
HTML 浏览器内核: IE:trident Firefox : gecko Safari/chrome : webkit Opera : presto(新 ...
- 详解SESSION与COOKIE的区别
在PHP面试中 经常碰到请阐述session与cookie的区别与联系,以及如何修改两者的有效时间. 大家都知道,session是存储在服务器端的,cookie是存储在客户端的,session依赖于c ...
- 点击自动显示/隐藏DIV代码。(简单实用)
注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 很多时候我们需要将DIV的信息默认为隐藏状态,只有当用户点击时才显示DIV中包含的提示文字.这类效果在互联网上应用得很多,但实现的方 ...
- 从一个弱引用导致的奔溃 谈 weak assign strong的应用场景【iOS开发教程】
从一个弱引用导致的奔溃 谈 weak assign strong的应用场景 .h中的定义方法一: @property (nonatomic, assign) NSArray *dataSource; ...
- 安装cocoods
http://www.tuicool.com/articles/7VvuAr3 http://blog.csdn.net/gf771115/article/details/50403253(详细,用终 ...
- 利用WCF技术降低系统之间的耦合度
为了降低本系统各个组件之间的耦合度,本系统将BLL层采用WCF技术发布为Web Service,以供UI层调用. 前面我们已经介绍过,为什么UI层不直接调用BLL层,而是要经过UI->Servi ...
- DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法
DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...
- unslider.js源码
/** * Unslider by @idiot */ (function($, f) { // If there's no jQuery, Unslider can't work, so kill ...
- 21个免费的UI设计工具和资源网站,不管是web,js,android都
本帖最后由 hua631150873 于 2014-9-12 18:26 编辑 Lumzy 官方地址:http://www.lumzy.com/ Lumzy是一个网站应用和原型界面制作工具.使用Lum ...
- [Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.
http://www.58player.com/blog-2537-85030.html 接上文,项目中因为需要UI热更新,所以我使用了AssetBundle这个解决方案. ...