当前位置: 移动技术网 > 移动技术>移动开发>Android > Android实现点击两次BACK键退出应用

Android实现点击两次BACK键退出应用

2019年07月24日  | 移动技术网移动技术  | 我要评论

思路:android中捕获用户按键是在onkeydown方法中,只需要判断用户按键是否是keycode_back即后退键即可,剩下的即为判断两次点击back键时间间隔问题了。

第一种实现方式:

  package com.example.clickexittest; 
   
  import android.app.activity; 
  import android.os.bundle; 
  import android.os.handler; 
  import android.os.message; 
  import android.util.log; 
  import android.view.keyevent; 
  import android.widget.toast; 
   
  public class mainactivity extends activity { 
     
    private static final string tag = mainactivity_exit.class.getsimplename(); 
   
    // 定义一个变量,来标识是否退出 
    private static boolean isexit = false; 
   
    private static handler mhandler = new handler() { 
   
      @override 
      public void handlemessage(message msg) { 
        super.handlemessage(msg); 
        isexit = false; 
      } 
    }; 
     
    @override 
    protected void oncreate(bundle savedinstancestate) { 
      super.oncreate(savedinstancestate); 
      setcontentview(r.layout.activity_main); 
       
    } 
     
    @override 
    public boolean onkeydown(int keycode, keyevent event) { 
      if (keycode == keyevent.keycode_back) { 
        exit(); 
        return true; 
      } 
      return super.onkeydown(keycode, event); 
    } 
     
    private void exit() { 
      if (!isexit) { 
        isexit = true; 
        toast.maketext(getapplicationcontext(), "再按一次后退键退出程序", 
            toast.length_short).show(); 
        // 利用handler延迟发送更改状态信息 
        mhandler.sendemptymessagedelayed(0, 2000); 
      } else { 
        
        log.e(tag, "exit application"); 
         
        this.finish(); 
      } 
    } 
  } 

在exit方法中,会首先判断isexit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在 handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了back键,则再次执行exit方法,此时isexit的值已为 true,则会执行退出的方法。

第二种实现方式:

  package com.example.clickexittest; 
   
  import android.app.activity; 
  import android.os.bundle; 
  import android.util.log; 
  import android.view.keyevent; 
  import android.widget.toast; 
   
  public class mainactivity extends activity { 
   
    private static final string tag = mainactivity.class.getsimplename(); 
   
    private long clicktime = 0; //记录第一次点击的时间 
   
    @override 
    protected void oncreate(bundle savedinstancestate) { 
      super.oncreate(savedinstancestate); 
      setcontentview(r.layout.activity_main); 
   
    } 
   
    @override 
    public boolean onkeydown(int keycode, keyevent event) { 
      if (keycode == keyevent.keycode_back) { 
        exit(); 
        return true; 
      } 
      return super.onkeydown(keycode, event); 
    } 
   
    private void exit() { 
      if ((system.currenttimemillis() - clicktime) > 2000) { 
        toast.maketext(getapplicationcontext(), "再按一次后退键退出程序", 
            toast.length_short).show(); 
        clicktime = system.currenttimemillis(); 
      } else { 
        log.e(tag, "exit application"); 
        this.finish(); 
  //     system.exit(0); 
      } 
    } 
  } 

判断用户两次按键的时间差是否在一个预期值之内,是的话直接直接退出,不是的话提示用户再按一次后退键退出。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网