Activity按下2次退出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity按下2次退出相关的知识,希望对你有一定的参考价值。

先看下onBackPressed和onKeyDown的区别

android上有两种方法来获取该按钮的事件

1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK) { //按下的如果是BACK,同时没有重复
       Toast.makeText(ml78.this,"返回键Back键测试",1).show();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下

@Override
public void onBackPressed() {
// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
return;
}

1  现在实现对根Activity按下2此返回键实现退出

 

private static boolean isSysExit = false;
    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        if(!isSysExit){
            isSysExit = true;
            
            DensityUtil.showToast(this, "再按一次退出");
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    isSysExit =false;
                }
            }, 2000);
        }else {
            finish();
        }
    }

 

2  在根Activity中重写后退按钮响应事件,当按后退按钮的时候把Activity退置到后台

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        //当按下返回键时吧Activity退至到后台
        if(keyCode ==KeyEvent.KEYCODE_BACK){
            moveTaskToBack(true);
            return true;
        }
        
        return super.onKeyDown(keyCode, event);
    }

 

以上是关于Activity按下2次退出的主要内容,如果未能解决你的问题,请参考以下文章

android怎样点击两下退出程序

在 Activity App Bar 上按下后转到带有它被调用的片段的父 Activity

使用片段清除回栈

从另一个 Activity 返回后返回 MainActivity 的片段?

如何在按下单个片段的手动后退按钮时返回上一个片段?

按下向上按钮时的自定义 Activity 转换