Android 双击返回键退出程序的方法总结

 更新时间:2017年06月06日 10:22:08   投稿:lqh  
这篇文章主要介绍了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);
    }
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Kotlin中?和!!的区别详细对比

    Kotlin中?和!!的区别详细对比

    这篇文章主要给大家介绍了关于Kotlin中?和!!区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Android自定义View实现飘动的叶子效果(三)

    Android自定义View实现飘动的叶子效果(三)

    这篇文章主要为大家详细介绍了Android自定义View实现飘动的叶子效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android采取ContentObserver方式自动获取验证码

    Android采取ContentObserver方式自动获取验证码

    这篇文章主要为大家详细介绍了Android采取ContentObserver方式自动获取验证码,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android Adapter适配器使用示例讲解

    Android Adapter适配器使用示例讲解

    这篇文章主要为大家介绍了Android Adapter适配器使用示例讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Android编程实现AIDL(跨进程通信)的方法详解

    Android编程实现AIDL(跨进程通信)的方法详解

    这篇文章主要介绍了Android编程实现AIDL(跨进程通信)的方法,结合实例形式详细分析了Android实现AIDL(跨进程通信)的原理、具体流程与相关实现技巧,需要的朋友可以参考下
    2016-06-06
  • android 识别U盘以及读写文件的方法

    android 识别U盘以及读写文件的方法

    今天小编就为大家分享一篇android 识别U盘以及读写文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android小知识之OkHttp的2种请求方式详解

    Android小知识之OkHttp的2种请求方式详解

    OkHttp可以说是如今最为流行的网络请求框架之一,下面这篇文章主要给大家介绍了关于Android小知识之OkHttp的2种请求方式的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-10-10
  • 实战android打包和签名

    实战android打包和签名

    本篇文章给大家通过实例讲解了如何对android项目打包和签名,并把用到的文件和流程做了注视,需要的朋友参考一下吧。
    2017-12-12
  • Android ExpandableListView实现下拉刷新和加载更多效果

    Android ExpandableListView实现下拉刷新和加载更多效果

    这篇文章主要为大家详细介绍了Android ExpandableListView实现下拉刷新和加载更多效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android编程自定义Notification实例分析

    Android编程自定义Notification实例分析

    这篇文章主要介绍了Android编程自定义Notification的用法,结合实例形式简单分析了自定义Notification的具体功能与实现技巧,需要的朋友可以参考下
    2015-12-12

最新评论