当前位置: 移动技术网 > IT编程>移动开发>Android > Android Back键点击两次退出应用详解及实现方法总结

Android Back键点击两次退出应用详解及实现方法总结

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

思路: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); 
      } 
    } 
  }

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网