欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-11-23 23:22:22
android 双击返回键退出程序的方法总结 下面先说说lz思路,具体如下: 1. 第一种就是根据用户点击俩次的时间间隔去判断是否退出程序; 2. 第二种...

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);
    }
  }

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