【Android】结束活动退出程序的方法
关闭所有活动
有时我们可能会打开了很多个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】结束活动退出程序的方法相关推荐
- Android启动活动用什么方法,Android中活动的启动模式
自从跟某Android群里的小伙伴们说了"本皮卡丘要开始写文章了"之后,有时候皮卡丘在群里愉快得水着水着就有人冒出一句"皮卡丘你怎么还在水,文章呢?"吓得我整个 ...
- Android启动活动用什么方法,Android - 使用intent uri从命令行启动活动
我有一个带有以下intent过滤器的Activity A. android:name="com.comp.pac.ActivityA"> android:host=" ...
- Android启动活动用什么方法,Android中启动Activity活动的另一种写法|SquirrelNote
平时我们启动另一个Activity,并传递数据,如下代码: Intent intent=new Intent(AActivity.this,BActivity.class); intent.putEx ...
- Android基础之结束所有Activity通用方法
出处:http://blog.csdn.net/chenliguan/article/details/47295163 一.问题描述 做Android项目,退出程序时,有时不能退出所有的activit ...
- 人迹罕至的android要完全退出程序的一种方法
最近的一个项目,无意中发现了一个方法,使android要完全退出程序的一种方法,遥想当年,以便找到让的有效途径android遇险完全退出程序,我不由得有些感慨. 在这里,不敢独享.和大家分享一下,还启 ...
- Android结束进程的几种方法
Android 结束进程的几种方法 在开发过程中,遇到了测试的说关闭应用的时候出现了闪一下黑屏的情况,后面发现闪黑屏和杀掉进程有关系,这里就简单总结一下结束进程的几种方法,以及闪黑屏是如何解决的,防止 ...
- Android 重写系统Crash处理类,保存Crash信息到SD卡 和 完美退出程序的方法
转载时注明地址:http://blog.csdn.net/xiaanming/article/details/9344703 我们开发Android应用的时候,当出现Crash的时候,系统弹出一个警告 ...
- Android中活动Activity方面的知识点
1.创建activity 2.配置AndroidManifest.xml文件 <application.. <activity android:name=".NewActivit ...
- android 回归测试,android测试:monkey使用方法
android测试:monkey使用方法 Android Sdk给我们提供了Monkey和Monkeyrunner这两个自动化测试工具. 一.什么是Monkey Monkey是一个命令行工具,可以运行 ...
最新文章
- 2008.04.14狼图腾
- 用 Flask 来写个轻博客 (12) — M(V)C_编写和继承 Jinja 模板
- Mybatis:传输多个参数
- shell脚本执行返回的状态码
- 二叉树特性及详细例子
- VS Code 变身约会利器!以码会友,轻松找到心仪的TA!
- Visual C#使用ADO.NET自定义类MyDBase连接SQL Server数据库
- 黄聪:Discuz X2.0 SEO:论坛面包屑导航伪静态 去掉面包屑导航forum.php(转)
- Windows 会有开源的一天吗?
- chattr使用解释
- erp核心目的及erp特点
- pe给linux分区扩容,给linux虚拟机硬盘扩容(LVM分区)
- 【心电信号】基于matlab瞬时抑制心电信号IIR滤波【含Matlab源码 1533期】
- MYSQL 数据库的常用语句
- 最后1天,包邮送50豆瓣高分Python 好书
- 使用Quartus II9.0验证74161计数器
- RSA公钥加密与私钥解密算法
- Arcgis制作风速风向
- Docker简介与安装
- AIX中常用的SMIT 的使用
热门文章
- 浏览器出现Request method ‘GET‘ not supported (type=Method Not Allowed, status=405)的解决方法
- imgaug增强边界框
- 通信业面临剧变,丧钟为谁而鸣? (刘桓中)
- 第一次扁平化博客实战练习
- llinux系统查询端口是否被占用
- SLF4J:Failed to load class org.slf4j.impl.StaticLoggerBinder.
- 北京工业大学c语言网上作业,北京工业大学C语言部分练习答案.pdf
- 1218. settest
- Promise为什么同时触发了then和catch
- 怎样直接下载网页中的视频