自己实现了一个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/
本文原创,转载请注明原文地址:http://maosidiaoxian.iteye.com/blog/1404725
或我的另一个个人博客:http://msdxblog.sinaapp.com
分享到:
相关推荐
Android中知道界面是哪个activity,一次结束所有Activity退出程序
android中实现按两次返回键退出Activity,不再是返回一次就退出应用,第一次点击提示“再按一次退出应用”
Android代码一键退出客户端 多个Activity推出的时候用到的 原理是把所有打开的activity都放在一个list里面 当点击退出的时候便利list 然后一个一个的结束掉。方法简单易懂,一看就会
Android 实现了可以滑动左侧边缘退出Activity的功能
2、在你要退出的activity Oncreate方法中加入ExitApplication.getInstance().addActivity(this);作用是添加到你的activity历史中。 3、在你当前要完全退出程序的activity中覆盖onKeyDown方法. 4、当你点击手机的返回...
Android Activity 侧滑退出库
Android应用开发多个activity完全退出程序方法,亲测可用
本文示例实现了Android退出时关闭所有Activity的功能,分享给大家供大家参考之用。具体方法如下: 一般来说,在Android退出时,有的Activity可能没有被关闭。为了在Android退出时关闭所有的Activity,这里给出了以下...
Android动画效果-切换Activity动画,切换Activity时的淡入淡出和缩放进入退出效果
点击退出按钮时,关闭所有Activity,实现退出程序功能。 实现方法: 添加每一个Activity到一个Activity集合中,退出时遍历集合,将每一个Activity finish掉。
此工程为一键退出多个Activity简单示例,所有的Activity同时集成一个ParentActivity,在ParentActivity添加一个菜单触发事件来控制关闭activity,每打开一个Activity就记录下来并添加到一个list中,关闭的时候同时...
本文实例讲述了Android一次性退出多个Activity的方法。分享给大家供大家参考,具体如下: 因为android的API中没有提供一次性退出的接口所以想要在多activity的程序里面一次性退出的话就要费点功夫了。我是在一个单例...
本文实例讲述了退出Android程序时清除所有activity的方法。分享给大家供大家参考,具体如下: 在一个项目中,要退出android程序,试了restartPackage、 killBackgroundProcesses 、通过异常并在Application的子类中...
Android 滑动退出Activity
点击通知启动多个Activity.从启动Activity 返回不会退出app,而是返回到App 的MainActivity 或者其他Activity
NULL 博文链接:https://null-point.iteye.com/blog/1512784
关于怎么一次退出所有Activity网上有很多很多种说法,比如用杀进程的方式:android.os.Process.killProcess(android.os.Process.myPid());这种方式需要添加权限android.permission.KILL_BACKGROUND_PROCESSES;或者...
在退出activity时,设置intent.setAction("exit_app");然后跳转到栈底activity, 这样就可以清除栈底之外的所有activity,程序会自动执行onNewIntent方法,在该方法中获取它action, 如果等于"exit_app",则关闭栈底...
退出程序提示,退出程序后关闭所有activity