这里有新鲜出炉的精品教程,程序狗速度看过来!
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
这篇文章主要介绍了 Android 双击返回键退出程序的方法总结的相关资料, 需要的朋友可以参考下
Android 双击返回键退出程序的方法总结
下面先说说 LZ 思路,具体如下:
1. 第一种就是根据用户点击俩次的时间间隔去判断是否退出程序;
2. 第二种就是使用 Android 中计时器(Timer),其实这俩种都差不多.
思路是有了,,,接下来要怎么开搞呢???用户点击肯定会触发相应的事件,,,我们先来看下面俩个事件的作用。。。
Activity.onKeyDown();
当某个键被按下时会触发,但不会被任何的该 Activity 内的任何 view 处理。
默认按下 KEYCODE_BACK 键后会回到上一个 Activity。
Activity.onKeyUp():
当某个按键被按下,松开后触发,但不会被任何的该 Activity 内的任何 view 处理。
默认没有执行任何操作,只是简单的给一个 false 作为返回值。
So,,,接下来分别使用如上俩个方法干掉这个当年的拦路虎~
One Way:onKeyUp()
- //--------------使用onKeyUp()干掉他--------------
- //记录用户首次点击返回键的时间
- private long firstTime=0;
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- switch (keyCode){
- case KeyEvent.KEYCODE_BACK:
- long secondTime=System.currentTimeMillis();
- if(secondTime-firstTime>2000){
- Toast.makeText(MainActivity.this,"再按一次退出程序--->onKeyUp",Toast.LENGTH_SHORT).show();
- firstTime=secondTime;
- return true;
- }else{
- System.exit(0);
- }
- break;
- }
- return super.onKeyUp(keyCode, event);
- }
Two Way:onKeyDown()
- //--------------使用onKeyDown()干掉他--------------
- //记录用户首次点击返回键的时间
- private long firstTime=0;
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if(keyCode==KeyEvent.KEYCODE_BACK && event.getAction()==KeyEvent.ACTION_DOWN){
- if (System.currentTimeMillis()-firstTime>2000){
- Toast.makeText(MainActivity.this,"再按一次退出程序--->onKeyDown",Toast.LENGTH_SHORT).show();
- firstTime=System.currentTimeMillis();
- }else{
- finish();
- System.exit(0);
- }
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
Three Way:Timer
- @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- exitByDoubleClick();
- }
- return false;
- }
- private void exitByDoubleClick() {
- Timer tExit = null;
- if (!isExit) {
- isExit = true;
- Toast.makeText(MainActivity.this, "再按一次退出程序--->Timer", Toast.LENGTH_SHORT).show();
- tExit = new Timer();
- tExit.schedule(new TimerTask() {@Override public void run() {
- isExit = false; //取消退出
- }
- },
- 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
- } else {
- finish();
- System.exit(0);
- }
- }
来源: http://www.phperz.com/article/17/0817/337536.html