双击返回键退出应用

众多的安卓应用在退出时都用到了在指时间内连续点击2次返回键,退出应用。在搜罗了一些资料后,收集了一些实用靠谱的方法。

一.
在一个配置类Config中记录记录是否有首次按键
public static boolean hasFirBackPressed= false;

@Override
public void onBackPressed() {
  if(!Config.hasFirBackPressed){
    Toast.makeText(this, “再按一次退出程序”, Toast.LENGTH_SHORT).show();
    Config.hasFirBackPressed= true;
    new Timer().schedule(new TimerTask() {//延时两秒,如果超出则擦错第一次按键记录
      @Override
      public void run() {
        Config.hasFirBackPressed= false;
      }
    }, 2000);
  }else{
    finish();
    //执行安全退出的代码
    ……..
  }
}

通过 hasFirBackPressed来记录是否有首次按返回键的记录,如果不存在首次按键记录,则Toast提示,并记录首次按键记录,并启动线程在2秒后擦除该按键记录。如果在2秒内又按下返回键,则执行else里面的语句退出程序。

二.

private long mPressedTime = 0;

@Override
public void onBackPressed() {
  long mNowTime = System.currentTimeMillis();//获取第一次按键时间
  if((mNowTime - mPressedTime) > 2000){//比较两次按键时间差
    Toast.makeText(this, “再按一次退出程序”, Toast.LENGTH_SHORT).show();
    mPressedTime = mNowTime;
  }
  else{//退出程序
    this.finish();
    System.exit(0);
  }
}

这里是通过控制时间差来实现功能的,在首次按下返回键时,将会将当期时间赋值给mPressedTime并通过Toast提示用户,在第二次按下返回键时,如果与 mPressedTime记录的时间差值大于2秒则重新刷新mPressedTime的时间,如果小于2秒则执行else的语句退出程序。

三.

public class MainActivity extends Activity {
   private Toast toast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toast = Toast.makeText(getApplicationContext(), "确定退出?", 0);

    }
    public void onBackPressed() {
        quitToast();
    }
    private void quitToast() {
        if(null == toast.getView().getParent()){
            toast.show();
        }else{
            System.exit(0);
        }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值