`
貌似掉线
  • 浏览: 260541 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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/
本文原创,转载请注明原文地址:http://maosidiaoxian.iteye.com/blog/1404725
或我的另一个个人博客:http://msdxblog.sinaapp.com
0
0
分享到:
评论
2 楼 貌似掉线 2012-11-06  
avi9111 写道
想请问下你有没用过,好像没可能实现

如何调用这个类?

可以在Activity的onCreate方法中调用putActivity方法,如下:
引用

@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_travel);
ActivityTaskManager.getInstance().putActivity("TravelActivity", this);

然后在onDestroy方法中调用closeActivity方法。如果要退出所有的Activity(指加入到这里面的Activity),则如下:
引用
@Override
protected void onDestroy() {
if (mDB != null) {
mDB.close();
}
super.onDestroy();
ActivityTaskManager.getInstance().closeAllActivity();
}


其实这个类只是当初对Activity无法按流程依次退出时写的一个解决方案。如果在你的程序中,每个Activity的创建,退出的流程不乱,每个Activity的finish方法不论用户在怎样的操作过程下都有机会被调用,则不需要这个类了。
1 楼 avi9111 2012-11-05  
想请问下你有没用过,好像没可能实现

如何调用这个类?

相关推荐

    android退出所有Activity并且不弹出对话框实现

    总的来说,实现“android退出所有Activity并且不弹出对话框”的功能涉及对Android Activity管理机制的理解,合理使用`finishAffinity()`或通过启动新的任务来清除任务栈。虽然这种方法可以快速退出应用,但应谨慎...

    Android 完全退出程序,关闭所有Activity

    在Android应用开发中,完全退出程序意味着结束所有与应用程序相关的活动(Activity)并释放系统资源。用户通常期望点击“退出”按钮后,整个应用程序能够完全关闭,而不是仅仅停留在后台运行。下面我们将详细讨论...

    Android-Android实现了可以滑动左侧边缘退出Activity的功能

    在Android应用开发中,滑动边缘退出Activity是一种常见的交互设计,它可以提供更加直观和便捷的用户界面体验。本文将深入探讨如何在Android中实现这一功能,主要涉及Android自定义手势识别、视图层级管理和Activity...

    Android中知道界面是哪个activity,一次结束所有Activity退出程序

    以下将详细介绍如何在Android中判断当前显示的Activity,并一次性结束所有Activity。 首先,我们需要理解Android的Activity生命周期。每个Activity都有其特定的生命周期方法,如onCreate()、onStart()、onResume()...

    Android 一次启动多个Activity (TaskStackBuilder)

    "Android一次启动多个Activity (TaskStackBuilder)"这个话题涉及到Android的Task和Back Stack管理,以及如何利用TaskStackBuilder实现从通知启动多级Activity并保持正确的返回流程。下面将详细阐述这一知识点。 ...

    android按返回两次退出

    android中实现按两次返回键退出Activity,不再是返回一次就退出应用,第一次点击提示“再按一次退出应用”

    Android代码一键退出客户端 多个Activity

    Android代码一键退出客户端 多个Activity推出的时候用到的 原理是把所有打开的activity都放在一个list里面 当点击退出的时候便利list 然后一个一个的结束掉。方法简单易懂,一看就会

    Android-AndroidActivity侧滑退出库

    侧滑退出库就是这样一个例子,它扩展了Android Activity的基础行为,添加了新的用户交互模式。 根据提供的压缩包文件名 "jcdee-SideslipBack-fd5243e",我们可以推测这可能是一个Git仓库的特定版本,其中包含了实现...

    Android应用开发多个activity完全退出程序方法

    因此,我们需要一种策略来确保所有Activity都被正确关闭,以便完全退出程序。 在Android中,Activity的启动和管理是通过Activity栈(也称为任务栈)来实现的。每次启动一个新Activity,它都会被压入栈顶,而当用户...

    Android 多个activity完全退出实例代码

    2、在你要退出的activity Oncreate方法中加入ExitApplication.getInstance().addActivity(this);作用是添加到你的activity历史中。 3、在你当前要完全退出程序的activity中覆盖onKeyDown方法. 4、当你点击手机的返回...

    Activity启动和退出动画

    当用户退出Activity时,我们同样可以使用`overridePendingTransition()`。这次,我们将启动动画设置为退出动画资源,反之亦然。在Activity的onBackPressed()方法或者finish()方法中调用此方法: ```java @...

    退出程序提示,退出程序后关闭所有activity

    在Android应用开发中,"退出程序提示,退出程序后关闭所有Activity"是一个常见的需求,它涉及到用户交互和应用生命周期管理。Activity是Android系统中的一个核心组件,代表了用户与应用进行交互的界面。当用户完成某...

    Android实现退出时关闭所有Activity的方法

    本文示例实现了Android退出时关闭所有Activity的功能,分享给大家供大家参考之用。具体方法如下: 一般来说,在Android退出时,有的Activity可能没有被关闭。为了在Android退出时关闭所有的Activity,这里给出了以下...

    Android代码-从注册流程分析如何安全退出多个Activity多种方式.rar

    2. **多Activity退出**:在一个应用中有多个Activity时,如果希望一次性关闭所有Activity,可以采用以下策略: - 使用静态变量记录Activity栈:在每个Activity的`onCreate()`方法中添加栈顶Activity的数量,并在`...

    Android一次性退出多个Activity的方法

    现在,确保你的所有Activity都继承自`BaseActivity`,那么当你调用`ActivityManager`的`exit()`方法时,程序会依次结束所有已添加到栈中的Activity,从而达到一次性退出的效果。 这种方法的优点在于,它可以避免...

    android activity右进右出动画

    Activity之间的切换动画可以极大地提升用户体验,"android activity右进右出动画"就是一个常见的应用场景,它使得应用在切换时具有更加自然、流畅的视觉效果。在Android中实现这种动画主要涉及两部分:进入动画...

    Android按两次返回退出应用的代码

    在Android开发中,为了让用户能够明确地退出应用,通常会实现一个功能,即连续点击两次返回按钮后退出应用程序。这个功能可以防止用户意外地退出应用,同时也提供了良好的用户体验。下面我们将详细探讨如何在Android...

    一键退出多个Activity

    此工程为一键退出多个Activity简单示例,所有的Activity同时集成一个ParentActivity,在ParentActivity添加一个菜单触发事件来控制关闭activity,每打开一个Activity就记录下来并添加到一个list中,关闭的时候同时...

    Android高级应用源码-Activity启动和退出动画.rar

    本资源"Android高级应用源码-Activity启动和退出动画.rar"提供了一套实现此类动画的示例代码,对于深入理解Android应用开发,尤其是动画效果的实现具有很大的学习价值。 1. **Activity的生命周期** Activity的生命...

Global site tag (gtag.js) - Google Analytics