在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())只能杀死当前的activity,并不能杀死所有的activity,为了完美达到此效果,接下来通过一个案例实现:

一、使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity.

MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作.

/**
* 完全退出应用的Activity
* @author KiWi
*/
public class MyApplication extends Application { private List<Activity> activitys = null;
private static MyApplication instance; public MyApplication() {
activitys = new LinkedList<Activity>();
} /**
* 单例模式中获取唯一的MyApplication实例
*/
public static MyApplication getInstance(){
if(null == instance){
instance = new MyApplication();
}
return instance;
} /**
* 添加Activity到容器中
*/
public void addAcitivity(Activity activity){
if(activitys != null && activitys.size() > 0){
if(!activitys.contains(activity)){
activitys.add(activity);
}
}
else{
activitys.add(activity);
}
} /**
* 遍历所有Activity并finish
*/
public void exit(){
if(activitys != null && activitys.size() > 0){
for (Activity activity : activitys) {
activity.finish();
}
}
System.exit(0);
}
}

 二、在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中

MyApplication.getInstance().addActivity(this);

三、在需要结束所有Activity的时候调用exit方法

MyApplication.getInstance().exit();

最新文章

  1. 【转】ubuntu vpn自动切换路由
  2. 投入Html5的怀抱,最近在研究的Egret
  3. MySQL数据库相关命令
  4. java学习第10天 (增加关于eclipse添项目)
  5. Vim折叠模式设置
  6. awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上
  7. JBOss 端口没占用!
  8. oledb方式读取excel文件
  9. CABAC
  10. 为什么我的Android SDK Manager中只显示已安装的package?
  11. Android获取状态栏高度、标题栏高度、编辑区域高度
  12. HDU 1671 Phone List (Trie)
  13. 应用调试(三)oops
  14. DEV gridview根据单元格值改变其他单元格格式
  15. C++获取数组的长度
  16. Eclipse GBK批量转UTF-8插件(转)
  17. Kafka-Monitor
  18. Linux 获取 MAC 地址并去除 : 字符
  19. javaweb使用 window.location.href 传中文参数 乱码问题
  20. LA 4254 处理器(二分+贪心)

热门文章

  1. C语言常见错误中英文对照表
  2. 连载《一个程序猿的生命周期》-《发展篇》 - 7.是什么阻碍了&quot;程序猿&quot;的发展?
  3. 3D Touch开发全面教程之Peek and Pop - 预览和弹出
  4. Servlet支持上传多张图片
  5. GPU渲染管线概述
  6. 对java数组的一些理解
  7. 巧用*_his表记录操作历史
  8. 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏
  9. 使用D3 Geo模块画澳大利亚地图
  10. Apache网页的缓存时间