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不会消失.示例如下: 二.实现方法: 发布需 ...
随机推荐
- 在windows7 上安装 Sublime Text 3 及其插件
1.下载地址:http://www.sublimetext.com/3 请根据你的平台,选择适当的安装版本 安装完毕后,设定TAB键为4个空格( Preferences——>Setings-Us ...
- 优酷土豆2014校园招聘笔试题目之Java开发类
先总体说下题型,共有20道选择题,4道简答题,3道编程题和1道扩展题,题目都比较简单,限时一小时完成. 一.选择题 选择题非常简单,都是基础题,什么死锁发生的条件.HashMap和HashSet查找插 ...
- input lable水平对齐
1.CSS <style type="text/css"> input,label { vertical-align:middle;} </style ...
- 解析某些特殊格式XML文件时,获取不到根节点问题
还是在语音识别这块.在读取本地的SRGS的XML后,无法获取到根节点<grammar>. 下面是SRGS.XML文件(只给出了根节点) <?xml version="1.0 ...
- HtmlAgilityPack解析器在WP8.1下报错,不仅如此,社交化分享也报错。
以前WP7下是用的HtmlAgilityPack和 XPath来解析网页,很好用. 但是在Wp8.1下,这个里面却缺少了一个很重要的方法. HtmlDocument doc = new HtmlDoc ...
- PHP封装一个通用好用的文件上传处理类
封装一个文件上传类完成基本功能如下: 1.可上传多个或单个文件 2.上传成功返回一个或多个文件名 3.上传失败则返回每个失败文件的错误信息 上传类中的基本功能: 1.构造参数,用户可以自定义配置参数, ...
- iOS8无法弹出本地通知?
最近在看<iOS编程(第4版)>(就是Big Nerd Ranch用的那本教材).这本书写的不错,推荐一下,写的很细致,循序渐进,不能不赞一下外国人写书的思路,确实跟国人不同.之前学And ...
- bootstrap-tab
功能:点击时切换相应的内容或图片 插件:tab.js 要点:tab标签用在导航条上,以data-toggle作被点击者, 以tab-content作内容显示 <!DOCTYPE html> ...
- Eclipse高级使用技巧
1. Eclipse的配置文件导入和导出功能 说明:可以将Eclipse的自定义的工作空间配置文件导出和导入,这样创建多工作空间时候就省去了再设置的烦恼. 2. Eclipse设置显示行号 说明:设置 ...
- NGUI Sprite 和 Label 改变Layer 或父物体后 未更新深度问题
using UnityEngine; using System.Collections.Generic; /// <summary> /// Sprite is a textured el ...