`
bkship
  • 浏览: 48302 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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;

}

分享到:
评论
1 楼 one_old_water 2012-07-11  
哥,网上传来传去的就是想要那种效果:按第一次会提示,两秒后按还会提示,第三次按就一定会退出。

相关推荐

    QT数字键盘_界面动态生成

    它包含了数字0-9、正负号、退出、后退、确认、删除和小数点等常用功能键,为用户提供了一种便捷的输入方式。在QT编程中,我们可以利用Qt的信号与槽机制以及QLayout布局管理来构建这样的键盘。 首先,要创建一个数字...

    Fragment切换

    用户按下后退键时,系统会从栈顶取出最近的Fragment并将其恢复。这有助于实现类似Activity的导航历史。 ```java fragmentTransaction.addToBackStack(null); ``` 7. **处理Fragment的空状态和错误状态**:在...

    android fragment

    Fragment 也支持在 Activity 的后退栈中管理,这意味着用户可以使用“返回”键回退到前一个 Fragment 状态,而不仅仅是退出 Activity。这种机制使得在多 Fragment 的 Activity 中实现类似单 Activity 应用的导航变得...

    flutter-(完整)系统路由Route

    当你在应用中按下按钮,滑动或通过其他方式改变屏幕时,就是在进行`Route`的切换。 2. **Route类型** Flutter提供了多种`Route`类型,包括: - **MaterialPageRoute**:这是最常见的`Route`类型,用于创建具有...

    计算机职称考试答案学案.pdf

    8. **浏览器操作**:后退功能在完成一项任务后经常被用来返回之前的网页,方便继续下一个操作。此外,了解如何打开和退出网页也是基础的浏览器操作。 通过这些操作的实践和学习,考生可以提升其在计算机使用和技术...

Global site tag (gtag.js) - Google Analytics