转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

import java.util.Stack;import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;/*** * @ClassName: com.qust.myutils.AppManager* @Description: Activity管理类:用于管理Activity和退出程序* @author zhaokaiqiang* @date 2014-11-20 下午4:53:33* */
public class AppManager {// Activity栈private static Stack<Activity> activityStack;// 单例模式private static AppManager instance;private AppManager() {}/*** 单一实例*/public static AppManager getAppManager() {if (instance == null) {instance = new AppManager();}return instance;}/*** 加入Activity到堆栈*/public void addActivity(Activity activity) {if (activityStack == null) {activityStack = new Stack<Activity>();}activityStack.add(activity);}/*** 获取当前Activity(堆栈中最后一个压入的)*/public Activity currentActivity() {Activity activity = activityStack.lastElement();return activity;}/*** 结束当前Activity(堆栈中最后一个压入的)*/public void finishActivity() {Activity activity = activityStack.lastElement();finishActivity(activity);}/*** 结束指定的Activity*/public void finishActivity(Activity activity) {if (activity != null) {activityStack.remove(activity);activity.finish();activity = null;}}/*** 结束指定类名的Activity*/public void finishActivity(Class<?> cls) {for (Activity activity : activityStack) {if (activity.getClass().equals(cls)) {finishActivity(activity);}}}/*** 结束全部Activity*/public void finishAllActivity() {for (int i = 0; i < activityStack.size(); i++) {if (null != activityStack.get(i)) {activityStack.get(i).finish();}}activityStack.clear();}/*** 退出应用程序*/public void AppExit(Context context) {try {finishAllActivity();ActivityManager activityMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityMgr.killBackgroundProcesses(context.getPackageName());System.exit(0);} catch (Exception e) {}}
}

这个类是从oschina的androidclient开源项目中抽取出来的,主要用于Activity的管理和应用程序的退出。

假设我们在退出程序的时候,调用AppManager.AppExit(Context)就能够将栈中全部的Activity实例销毁。

假设我们要更加方便的是用这个管理类,推荐创建一个Activity的基类,并在onCreate和onDestory方法里面调用相应的方法,这样我们就不须要单独在某个Activity里面加入反复逻辑。精简代码。比方像以下这样

/*** 对context进行初始化,并将当前的Activity加入到堆栈中,便于管理*/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 加入Activity到堆栈AppManager.getAppManager().addActivity(this);}@Overrideprotected void onDestroy() {super.onDestroy();// 结束Activity&从堆栈中移除AppManager.getAppManager().finishActivity(this);}

转载于:https://www.cnblogs.com/yxwkf/p/5069743.html

【Android工具类】Activity管理工具类AppManager相关推荐

  1. Windows磁盘管理软件/磁盘管理工具/硬盘分区管理工具

    说到磁盘管理软件/磁盘管理工具/硬盘分区管理工具,大家可能会想到Windows自带的磁盘管理器,可以做简单的创建.删除.格式化.压缩.扩展卷.基本盘/动态盘互转.MBR/GPT盘格式互转等操作.但是对 ...

  2. 软件测试工具与软件测试管理工具的关系

    软件测试工具与软件测试管理工具的关系 1.软件测试工具可提高软件测试工作的效率. 2.软件测试工具分为自动化软件测试工具和测试管理工具,所以测试管理工具是测试工具的一种. 3.自动化软件测试工具存在的 ...

  3. android 应用程序Activity管理类

    import android.annotation.SuppressLint; import android.app.Activity; import android.app.ActivityMana ...

  4. 小米android微博授权管理工具下载,微博推广:第三方微博工具,微博管理工具:微博粉丝管理工具!...

    推荐几个微博营销的必备工具 第三方微博工具很多,主要有以下几大类: 1:微博内容库工具 内容库目前以微博内容库.皮皮时光机.微博段子,这几款工具的内容库分类明确,并且有关键字搜索功能,而且每条微博连图 ...

  5. php ad 管理工具,打开AD管理工具连接到指定DC

    如何指定打开AD管理工具时连接到某台DC?现在因为管理员众多,专门搭建了一台服务器,用于管理员连接并使用管理工具对AD进行管理.但是希望对其操作进行记录,所以开了审核日志.现在希望在这台服务器上打开A ...

  6. 登录linux后台工具,linux后台进程管理工具-supervisor

    安装环境为:centos,如果是ubuntu的话命令可能会不一样. Supervisor 是一个用python编写的进程管理工具,能将一个普通的命令行进程变为后台的deamon,方便管理. 安装sup ...

  7. 团队工具_「管理工具」部门有效管理的5个工具,打造高效团队

    前言:见过很多部门领导,各式各样,每个人都有自己的管理风格和性格特点.同时,在他们的领导下,部门氛围和目标达成也是各有千秋,有的团队高效.有的团队涣散.有的团队凝聚力强.有的团队极不稳定等等.我们发现 ...

  8. [工具]OFFICE插件管理工具-帮助更好地管理及使用电脑安装过的OFFICE插件

    在OFFICE软件的世界中,除了由微软提供的OFFICE软件功能外,还有大量的功能由第三方开发者完成,市面上也存在大量的OFFICE插件供用户选择. 使用场景 有些插件仅在某个特定场景下才会使用,日常 ...

  9. linux 书签管理工具,在书签管理工具中使用Ubuntu字体

    通过便捷书签管理程序(Bookmarklet,一种在浏览器中存放书签URL地址的应用程序)来在大多数的网站上推广使用Ubuntu系统的默认字体.--读者米格尔·费尔南迪斯 米格尔在他的想法产生之前告诉 ...

最新文章

  1. apache和tomcat的区别
  2. Python常用模块之configparser
  3. Shell循环与结构化命令
  4. 面试必会系列 - 1.4 类加载机制
  5. Angular最新教程-第六节编写响应式导航栏
  6. Linux入门笔记——文件操作命令1
  7. 整理的3500个常用汉字的调用字典
  8. 最新 | 更小、更快、更强!EfficientNetV2:Smaller-Faster-Better
  9. java RuntimeException
  10. Mac OS X 上搭建 Hadoop 开发环境指南
  11. eclipse adt如何切换到设计界面_如何设计出优秀的UI界面?这4个方面帮你快速优化...
  12. PAT甲题题解-1124. Raffle for Weibo Followers-模拟,水题
  13. 第015讲 仿sohu首页面布局
  14. 谷歌翻译配置hosts
  15. 数学建模常用算法—层次分析法(AHP)
  16. 如此优秀,这18个 Python 高效编程技巧真的太香了
  17. LimeSDR srsLTE实验
  18. HBuilderX 开发工具
  19. 海思3559A上编译ffmpeg
  20. 解决linux下.AppImage文件无法运行问题

热门文章

  1. win10 EFI装ubuntu14.04双系统 及初始配置
  2. HTML5 浏览器支持(怎么样让低版本浏览器支持html5?)
  3. JButton 做图片框
  4. python for selenium 数据驱动测试
  5. Xshell5 提示要继续使用此程序,您必须应用最新的更新或使用新版本
  6. 总结:Oracle快速入门
  7. 【转】如何理解c和c++的复杂类型声明
  8. redis配置实例及redis.conf详细说明
  9. Spark资源分配异常闪Bug
  10. 使MySQL 支持繁体字