我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源。有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽。

后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,附代码:

public boolean onCreateOptionsMenu(Menu menu)
{super.onCreateOptionsMenu(menu);
MenuItem item = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, "Exit");
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener()
{
public boolean onMenuItemClick(MenuItem item)
{
System.exit(0);
return true;
}
});
return true;
}

想到这样太不方便了,每次退出界面之后应用程序还在运行,今天查了下资料终于把这个问题给解决了,
网上提供了几种方法,我吸收了下面这个自认为简单易懂的方法,将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this);添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。

import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Application;
import android.content.DialogInterface;
import android.content.Intent; public class SysApplication extends Application { private List mList = new LinkedList(); private static SysApplication instance; private SysApplication() {   } public synchronized static SysApplication getInstance() { if (null == instance) { instance = new SysApplication(); } return instance; } // add Activity  public void addActivity(Activity activity) { mList.add(activity); } public void exit() { try { for (Activity activity : mList) { if (activity != null) activity.finish(); } } catch (Exception e) { e.printStackTrace(); } finally { System.exit(0); } } public void onLowMemory() { super.onLowMemory();     System.gc(); }
}

在应用程序里面 的activity的oncreate里面添加SysApplication.getInstance().addActivity(this)
如:

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this);
}

在需要退出程序的时候,调用:

SysApplication.getInstance().exit();

简而言之,通过单例模式把每个Activity 的引用添加到一个全局链表中,每次退出程序调用System.exit(0)时,先调用链表中Activity 的finish方法。

转载于:https://www.cnblogs.com/Couch-potato/archive/2012/11/19/2776997.html

【转】android实现退出整个工程相关推荐

  1. Android 如何退出整个应用程序?

    转载文章:http://blog.csdn.net/sunnyfans/article/details/7688092 Android 怎么退出整个应用程序? 我们在写android应用程序时,经常会 ...

  2. Android 怎么退出整个应用程序?

    Android 怎么退出整个应用程序? 我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这 ...

  3. android读取工程目录下的文件,Android编程实现读取工程中的txt文件功能

    本文实例讲述了Android编程实现读取工程中的txt文件功能.分享给大家供大家参考,具体如下: 1. 众所周知,Android的res文件夹是用来存储资源的,可以在res文件夹下建立一个raw文件夹 ...

  4. android 点击退出账号,Android应用退出登录的实现方法

    每一个app都会有一个"退出登陆"的功能,当点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,后来用广播实现了 ...

  5. Android实现退出提示的功能

    摘要:本文主要是实现在Android中退出提示的功能,平常使用Android手机时,点击返回键时,由于不小心点击返回键过快,导至程序返回试界面之后直接退出程序,导至用户还要再重新登录一次.为解决此类问 ...

  6. android studio 如何导入工程文件,Android studio如何导入已有的eclipse工程

    google最近新推出了android studio软件来取代eclipse,使用起来确实体验很不错,比eclipse要强大一些,不过,现在包括github上面的代码都是基于eclipse的,因此,我 ...

  7. android 退出多个activity,Android 中 退出多个activity的经典方法

    1.使用list集合方式 用list保存activity实例,然后逐一干掉 import java.util.linkedlist; import java.util.list; import and ...

  8. android禁用应用组件,Android彻底退出(关闭)应用程序.docx

    Android彻底退出(关闭)应用程序.docx 做android开发时,发现一个关于android退出时不能彻底关闭的问题,比如:一个程序里new?出了N多个Thread,这样在退出程序的可能不能完 ...

  9. Android 双击退出和单击回到桌面

    Android 双击退出和单击回到桌面 //双击退出app@Overridepublic void onBackPressed() {if (System.currentTimeMillis() - ...

最新文章

  1. 测试录制的电话拨码声音信号在发送过程中的问题
  2. 无线网络国际会议排名(zz)
  3. 采用redis+ThreadLocal获取全局的登录用户信息(二)增加token快失效时刷新
  4. 知识图谱最新权威综述论文解读:实体发现
  5. Redis——史上最强【集群】入门实践教程
  6. JS对象 颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序。
  7. python爬取qq好友网络状态_Python爬虫实战----爬取QQ空间好友说说并生成词云(超详细)...
  8. python基础之列表生成式和生成器
  9. Affymetrix基因芯片小总结
  10. Exchange2010安装指南
  11. 使用EasyExcel的模板导出复杂表头的Excel- 先单组数据填充,再多组数据填充
  12. 数据分析项目-大选献金数据分析
  13. 伴雨夜谈【即便大雨倾盆,也无法击起心中的波澜】
  14. SpringSecurity实现自定义登录界面
  15. 身份证男女识别---进一步优化03
  16. Android IOS平台AE动画库
  17. 阿昆的Java学习日记Day2
  18. python 麻将算胡,快速算法 没有递归,不超过100行
  19. eclipse Android添加权限
  20. (遇到问题)占用空间远大于文件本身---exFAT移动固态硬盘瞬间装满(已解决-文件系统和默认簇大小的原因)

热门文章

  1. 当大家都不理解你的时候,就是你成就的捷径
  2. 要想赚到最轻松的钱,就要靠资源整合的重要性
  3. 一个 JVM 参数引发的频繁 CMS GC
  4. 直接让web服务运行在80端不行吗,为什么要用nginx反向代理?
  5. VS2010应用程序工程中文件的组成结构
  6. 1.2.1 计算机网络的分层结构、协议、服务和接口(转载)
  7. 【计算机网络】关于IP数据报 首部检验和的反码问题(二进制反码)
  8. SQL Server 2014数据访问层
  9. goroutine 修改全局变量无效问题
  10. Ubuntu14.04安装tomcat-9.0.1的教程