My “再按一次后退键退出应用”

其实你去网上搜这个标题一大堆的帖子,千篇一律的转自同一个人的帖子!

 

以后大家转帖子先实践一下好不好!

 

网上那个达不到预期效果,第一下正常提示, 如果两秒内再点 就退出 过了两秒点还是会正常提示

 

但是第三次一定会退出。

 

下面是网上疯传的代码:

 

 

private static Boolean isExit = false;
    private static Boolean hasTask = false;
    Timer tExit = new Timer();
    TimerTask task = new TimerTask() {
      
        @Override
        public void run() {
            isExit = false;
            hasTask = true;
        }
    };
     
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        System.out.println("TabHost_Index.java onKeyDown");
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if(isExit == false ) {
                isExit = true;
                Toast.makeText(this"再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();
                if(!hasTask) {
                    tExit.schedule(task, 2000);
                }
            else {
                finish();
                System.exit(0);
            }
        }
        return false;

 

    }

 

 

里面的hasTask自从第一次timer后变true后 第二次就是只是显示toast了 不会去修改isExist变量了

 

这样第三次会直接进入到else里面finish程序。

 

如果不要hasTask会在第二次 点的时候说timer有任务了 而崩溃

 

但是如果每次都新建一个timer就可以解决这个问题

 

一下是我的代码,有错请指出:

 

 

private Boolean isPressedBack = false;

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

if (isPressedBack == false) {

isPressedBack = true;

Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();

Timer timer = new Timer();

TimerTask task = new TimerTask() {

public void run() {

isPressedBack = false;

}

};

timer.schedule(task, 2000);


} else {

ActivityFileManager.this.finish();

}

}

return false;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值