双击退出程序
来源:互联网 发布:angular4 node sass 编辑:程序博客网 时间:2024/06/13 13:51
先上效果图
双击返回键退出程序可是现在非常常用的功能了,但是我以前总是做不出来这个效果,看到网上有什么2种方法,或者3种方法退出程序,但是对于开发者来说把一种方法弄明白就好啦
所以下面是一种方法退出APP
首先来说说我的大体思路
1.返回键的响应事件
2.判断是第几次点击返回键
3.如果是第二次点击返回键,就要判断两次点击的时间间隔
4.如果是连续点击了两次返回键,退出程序
返回键的响应事件
这个方法是
@Override public void onBackPressed() { super.onBackPressed(); }
就像按钮的点击事件一样,一旦返回键被点击就会触发这个方法(这个方法直接在Activity中调用)
看看源码是啥样的 点击
super.onBackPressed();
@Override public void onBackPressed() { if (!mFragments.getSupportFragmentManager().popBackStackImmediate()) { super.onBackPressed(); } }
点击上面的 super.onBackPressed();
public void onBackPressed() { if (mActionBar != null && mActionBar.collapseActionView()) { return; } if (!mFragments.getFragmentManager().popBackStackImmediate()) { finishAfterTransition(); } }
这个方法主要的作用是点击时候,将当前页面销毁
这样APP就会实现返回的效果
如果把
super.onBackPressed();
注释掉那个点击返回键就没有反映了 ,就不会被销毁了
判断第几次点击的返回键
声明变量 lats=-1
如果点击了返回键last的值就会改变(变成第一次点击返回键时的时间)
如果是第一次点击返回键,弹出请再点击一次退出的吐司,并得到第一次点击返回键的时间
如果不是第一次点击的返回键,就退出
如果是第二次点击返回键,判断两次返回键的间隔时间
用第一次返回键的时间减去第二次的时间
代码演示
//点击返回按钮,实现点击两次退出的效果 //上一次点击的时间 long last = -1; @Override public void onBackPressed() { //将父类方法点击一次就销毁界面的方法注释掉 //super.onBackPressed(); //获取当前点击的时间 long now = System.currentTimeMillis(); //第一次点击返回键则last=-1 if (last == -1) { Toast.makeText(MainActivity.this, "请再点击一次退出界面", Toast.LENGTH_SHORT).show(); //第一次的点击事件则就变成了上一次的点击时间 last = now; //如果不是第一次点击 } else { //判断两次点击的时间间隔 //时间间隔正确 if ((now - last) < 2000) { Toast.makeText(MainActivity.this, "已退出", Toast.LENGTH_SHORT).show(); finish(); } else { //如果时间间隔太长则第二次点击当做第一次处理 last = now; Toast.makeText(MainActivity.this, "请再点击一次退出界面", Toast.LENGTH_SHORT).show(); } } }
那么对于一个APP来说,要保证所有的Activity都被销毁(除了当前)
在调用finish();之后才会显示系统界面
最后是项目地址
https://github.com/XuDaHaoRen/QuitDemo
阅读全文
1 0
- 双击返回退出程序
- 转:双击退出程序
- 双击退出程序
- 双击退出程序
- Android双击退出程序
- 双击退出程序
- 双击退出程序
- 双击退出程序
- 双击退出程序
- 双击退出程序
- 双击 返回键 退出程序
- 双击BACK键退出程序
- 双击BACK键退出程序
- 主Activity双击退出程序
- 双击返回键退出程序
- 实现双击点击退出程序
- 常规双击回退键退出程序
- 双击返回键退出程序
- 关于Git Github的使用
- 剑指offer_根据前序和中序确定二叉树
- 排序h之直接插入排序(OJ题目)
- 学习笔记——JAVA线程<3>线程的基本信息
- 进程间通信之“内存共享”的简单实现
- 双击退出程序
- day12 多路IO转接服务器
- [机器学习入门] 深度学习简介,GPU计算的原理,分布式机器学习原理
- Java深拷贝
- 561. Array Partition I
- 2017.6.5 YY的GCD 失败总结
- sort与lambda
- 【Hash】【二分查找】17.6.3 集合 题解
- 回溯法0-1背包问题