首先说明的一点就是,真正意义上的完全退出程序在应用层上其实还是做不到的。我们在应用层上所做的退出程序,都只是关闭了当前的前台程序,而后台程序其实还是在运行着的。

这里我们的思路就是把所有的Activity收集起来,然后再统一进行关闭。那么怎么来收集Activity呢?我们都知道Activity是一个对象,那么是用数组吗?如果用数组,我们就得给一个定长的数组来进行限制,数组的大小大了不好,小了更是是要命的事。那用什么?我们对对象的收集处理一般是用List<...>或是其衍生。。。

这里我们用List<Activity>来保存Activity:

private List<Activity> activityList = new LinkedList<Activity>();

再定义一个对外的方法接口,用于接收Activity:

public void addActivity(Activity activity) {activityList.add(activity);}

最后统一finish();

public void exit() {for (Activity activity : activityList) {activity.finish();}System.exit(0);}

当我们创建了一个Activity的同时,我们就把这个Activity添加到我们List<Activity>中来,如下:

EyeApplicationManager.getInstance().addActivity(this);

---------------------------------------- 管理Activity退出类的代码如下 ---------------------------------------

package com.android.password.application;import java.util.LinkedList;
import java.util.List;import android.app.Activity;/*** 这个类是用单例模式实现的一个* 用来退出程序的类* @author William-H* 开发日期:2014年8月22日*/
public class EyeApplicationManager {private List<Activity> activityList = new LinkedList<Activity>();private static EyeApplicationManager instance;private EyeApplicationManager() {}/*** 单例模式中获取唯一的MyApplication实例* @return*/public static EyeApplicationManager getInstance() {if (null == instance) {instance = new EyeApplicationManager();}return instance;}/*** 添加Activity到容器中* @param activity*/public void addActivity(Activity activity) {activityList.add(activity);}/*** 遍历所有Activity并finish*/public void exit() {for (Activity activity : activityList) {activity.finish();}System.exit(0);}
}

如果你足够细致,我想你应该会发现,其实,这个类能做的可不是只有退出程序这么简单。。。

关于退出程序,我之前也有写过一篇是关于双击返回键退出程序,点击连接进行博客。。。

那在Demo中究竟是怎么样来使用呢?点击查看源码

Android退出程序(一)——单例模式相关推荐

  1. Android退出程序(三)——Android事件总线

    概述 当我们跟随时间的脚步向前挪动的时候,总能发现原来以前的自己做了一些愚蠢的事情.但,不见得以前就是不好的事情.我在以前的博客中写过两种关于Android中如何退出应用程序的方法.近日,我又发现了一 ...

  2. Android退出程序(二)——利用广播机制

    概述: 基于上一篇博客<Android退出程序(一)--单例模式>的学习,我们知道了如何利用单例和循环遍历的方式来退出我们的应用程序.这篇博客则要从另一个角度来解决问题--广播.即是,接收 ...

  3. android中的单例模式,Android中的单例模式

    定义: 单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 使用场景: 确保某一个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象只应该有且只有一 ...

  4. android 单例模式的使用场景,android设计模式之单例模式

    (其实设计模式应该从属于java,但是会专门针对android做相应的解释,所以就取名为android设计模式~) 一.单例模式的介绍 单例模式是应用最广的模式之一,在应用这个模式的时候,单例对象的类 ...

  5. Android开发之单例模式初探

    单例模式是什么呢?是Java23中模式之一,在Android开发中也有着广泛的运用,比如Calander类,在创建对象的时候并不是通过 new Calander而是Calander.getInstnc ...

  6. Android设计模式之——单例模式

    一.介绍 单例模式是应用最广的模式之一,也可能是很多初级工程师唯一会使用的设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在.许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系 ...

  7. Android中的单例模式(java单例模式详解,Glide,EventBus,LayoutInfalter的源码单例模式详解)

    一.单例模式 (1)单例模式介绍和定义 ​ 大概意思是保证一个类在任何时候都只有一个实例在内存里,以static形式提供整个项目的访问.在Android系统中常用的地方有:创建一个SQLiteOpen ...

  8. android 退出程序解决内存释放so的问题

    做Android程序的时候发现一个问题,由于用到了so库,当应用程序退出了,但是手机变得很卡,点击"设置"查看应用程序,界面显示着可以点击"强制关闭".  由于 ...

  9. android退出程序代码!一口气拿了9家公司的offer,不吃透都对不起自己

    写在前面 为什么只看这一篇就够了? 现在CSDN.知乎.掘金上各路大佬层出不穷,他们身经百战.血洗杀场,总结出满满的求职干货.但同时也存在很多非良心的博主,要么活出了人类的本质,复读机一样到处转载:要 ...

最新文章

  1. 解决MySQL导入数据时遇到secure-file-priv的问题
  2. Java-Runoob-高级教程-实例-字符串:13. Java 实例 - 字符串格式化
  3. selenium IDE录制
  4. Linux ping不通百度的解决方法
  5. Codeforces Round #422(Div 2)
  6. 【笔记】LR录制方式和常用函数
  7. html隐藏域 js,JS实现“隐藏与显示”功能(多种方法)
  8. 为什么云原生+分布式是数据库的未来?
  9. ajax中加入if,如何添加if语句到Ajax
  10. 全网首发:怎样制作CDKEY(3)-加密
  11. 地图比例尺与空间分辨率之间的关系_地图比例尺与遥感影像分辨率的关系探讨...
  12. 公用方法:得到汉字的首字母(大写) 方案3
  13. ant批量修改文件名_怎么批量修改文件名后缀(安卓批量修改文件后缀操作方法)...
  14. 南大软院大神养成计划--CSS网页布局
  15. 前端2020面试题195道
  16. The Shawshank Redemption-13
  17. css 多文件上传框美化
  18. 本地ecshop网站怎么上传到服务器,ecshop 上传服务器
  19. mongoDB的读书笔记(04)_【Replica】(01)_Replica的一些基本概念
  20. mac 无法访问浏览器

热门文章

  1. java元婴期(18)----java进阶(spring(2)----DI(依赖注入)基于注解的IOC与DI配置properties)
  2. 创新实训个人记录:P versus NP
  3. 【Python小游戏】当当当当 万众瞩目得《滑雪大冒险》来啦~(附源码)
  4. MySQL—事务并发问题
  5. [专栏目录]-Crypto学习笔记目录
  6. android手机系统的启动流程-secureboot流程(以MTK平台为例)
  7. linux kernel同步方法的总结
  8. Docker核心原理之cgroups
  9. 【僵尸复活】【已通过】https的app如何抓包
  10. 分享超全的 Linux 渗透测试命令速查表