关闭所有活动


有时我们可能会打开了很多个Activity,如果需要在某个页面可以关掉所有的Activity并退出程序。下面提供一个关闭所有Activity的方法, 就是用一个list集合来存储所有Activity

1.创建一个ActivityCollector作为Activity管理器,代码如下:

public class ActivityCollector {public static List<Activity> activities = new ArrayList<>();//添加一个新活动public static void addActivity(Activity activity) {activities.add(activity);}//移除一个活动public static void removeActivity(Activity activity) {activities.remove(activity);}//关闭所有活动public static void finishAll() {for (Activity activity : activities) {if (!activity.isFinishing()) {activity.finish();}}}
}

2.在BaseActivity中添加代码如下:

public class BaseActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityCollector.addActivity(this);//创建一个新活动时加入活动管理器}//重写onDestroy()从活动管理器中移除被关闭的活动@Overrideprotected void onDestroy() {super.onDestroy();ActivityCollector.removeActivity(this);}
}

可以在任意一个活动中调用ActivityCollector.finishAll()方法来关闭所有活动

完全退出程序


上面说的是关闭所有Activity的,但是有时候可能要退出整个App,连后台任务都清理得一干二净的话,可以使用搭配着下述代码使用:

public void AppExit(Context context) {  try {  ActivityCollector.finishAll();  ActivityManager activityMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  activityMgr.killBackgroundProcesses(context.getPackageName());  System.exit(0);  } catch (Exception ignored) {}
}  

双击退出程序的两种方法


定义一个变量,来标识是否退出

// 定义一个变量,来标识是否退出
private static boolean isExit = false;
Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);isExit = false;}
};public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if (!isExit) {isExit = true;Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show();// 利用handler延迟发送更改状态信息mHandler.sendEmptyMessageDelayed(0, 2000);} else {exit(this);}return false;}
return super.onKeyDown(keyCode, event);}

保存点击时间

//保存点击的时间
private long exitTime = 0;
public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if ((System.currentTimeMillis() - exitTime) > 2000) {Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();} else {exit();}return false;}return super.onKeyDown(keyCode, event);
}

【Android】结束活动退出程序的方法相关推荐

  1. Android启动活动用什么方法,Android中活动的启动模式

    自从跟某Android群里的小伙伴们说了"本皮卡丘要开始写文章了"之后,有时候皮卡丘在群里愉快得水着水着就有人冒出一句"皮卡丘你怎么还在水,文章呢?"吓得我整个 ...

  2. Android启动活动用什么方法,Android - 使用intent uri从命令行启动活动

    我有一个带有以下intent过滤器的Activity A. android:name="com.comp.pac.ActivityA"> android:host=" ...

  3. Android启动活动用什么方法,Android中启动Activity活动的另一种写法|SquirrelNote

    平时我们启动另一个Activity,并传递数据,如下代码: Intent intent=new Intent(AActivity.this,BActivity.class); intent.putEx ...

  4. Android基础之结束所有Activity通用方法

    出处:http://blog.csdn.net/chenliguan/article/details/47295163 一.问题描述 做Android项目,退出程序时,有时不能退出所有的activit ...

  5. 人迹罕至的android要完全退出程序的一种方法

    最近的一个项目,无意中发现了一个方法,使android要完全退出程序的一种方法,遥想当年,以便找到让的有效途径android遇险完全退出程序,我不由得有些感慨. 在这里,不敢独享.和大家分享一下,还启 ...

  6. Android结束进程的几种方法

    Android 结束进程的几种方法 在开发过程中,遇到了测试的说关闭应用的时候出现了闪一下黑屏的情况,后面发现闪黑屏和杀掉进程有关系,这里就简单总结一下结束进程的几种方法,以及闪黑屏是如何解决的,防止 ...

  7. Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法

    转载时注明地址:http://blog.csdn.net/xiaanming/article/details/9344703 我们开发Android应用的时候,当出现Crash的时候,系统弹出一个警告 ...

  8. Android中活动Activity方面的知识点

    1.创建activity 2.配置AndroidManifest.xml文件 <application.. <activity android:name=".NewActivit ...

  9. android 回归测试,android测试:monkey使用方法

    android测试:monkey使用方法 Android Sdk给我们提供了Monkey和Monkeyrunner这两个自动化测试工具. 一.什么是Monkey Monkey是一个命令行工具,可以运行 ...

最新文章

  1. 2008.04.14狼图腾
  2. 用 Flask 来写个轻博客 (12) — M(V)C_编写和继承 Jinja 模板
  3. Mybatis:传输多个参数
  4. shell脚本执行返回的状态码
  5. 二叉树特性及详细例子
  6. VS Code 变身约会利器!以码会友,轻松找到心仪的TA!
  7. Visual C#使用ADO.NET自定义类MyDBase连接SQL Server数据库
  8. 黄聪:Discuz X2.0 SEO:论坛面包屑导航伪静态 去掉面包屑导航forum.php(转)
  9. Windows 会有开源的一天吗?
  10. chattr使用解释
  11. erp核心目的及erp特点
  12. pe给linux分区扩容,给linux虚拟机硬盘扩容(LVM分区)
  13. 【心电信号】基于matlab瞬时抑制心电信号IIR滤波【含Matlab源码 1533期】
  14. MYSQL 数据库的常用语句
  15. 最后1天,包邮送50豆瓣高分Python 好书
  16. 使用Quartus II9.0验证74161计数器
  17. RSA公钥加密与私钥解密算法
  18. Arcgis制作风速风向
  19. Docker简介与安装
  20. AIX中常用的SMIT 的使用

热门文章

  1. 浏览器出现Request method ‘GET‘ not supported (type=Method Not Allowed, status=405)的解决方法
  2. imgaug增强边界框
  3. 通信业面临剧变,丧钟为谁而鸣? (刘桓中)
  4. 第一次扁平化博客实战练习
  5. llinux系统查询端口是否被占用
  6. SLF4J:Failed to load class org.slf4j.impl.StaticLoggerBinder.
  7. 北京工业大学c语言网上作业,北京工业大学C语言部分练习答案.pdf
  8. 1218. settest
  9. Promise为什么同时触发了then和catch
  10. 怎样直接下载网页中的视频