Android 再按一次退出

有两种方法:

  1).第一次点击的时候标记一下状态,提示再按一次退出,然后开始计时,如果超过3秒没有再次按返回,一切状态归零,反之,如果3秒内再次按返回键则进行退出。

    boolean isExit = false;
    int time = 0;

    @Override
    public boolean back() {
        // TODO Auto-generated method stub
        if (!isExit) {
            isExit=true;
            final Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                        time++;
                        if (time == 3) {
                            isExit = false;
                            time=0;
                            timer.cancel();
                        }
                        System.out.println(time+"");
                }
            }, 0,1000);
            showMsg("再按一次退出");
        } else if (isExit && time < 3) {
            finish();
        }
        return true;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK){
            return back();
        }
        return super.onKeyDown(keyCode, event);
    }

  2).第一次点击的时候记下当前时间,第二次点击的时候取当前时间和上次记录的时间做差,如果小于3秒则退出,反之将此次时间赋给标记时间,提示再按一次退出。

    long lastTime;
    @Override
    public boolean back() {
        long currTime=System.currentTimeMillis();
        if(currTime-lastTime>3000){
            showMsg("再按一次退出");
            lastTime=currTime;
        }else{
            finish();
        }
        return false;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK){
            return back();
        }
        return super.onKeyDown(keyCode, event);
    }
时间: 2024-07-31 09:24:30

Android 再按一次退出的相关文章

Android再按一次退出

private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(get

android 再按一次退出(笔记)

long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(getApplicat

Android实现退出时提示再按一次退出

思路: 用定时器(timer)计时,当用户第一次点返回键时提示"再按一次退出",两秒之内再点一次退出.不点就判断为误触. package com.example.themtest; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.vi

Android连续点击两次返回键退出应用,提示“再按一次退出应用&quot;

// 定义一个long型变量,用于判断两次点击的间隔 private long exitTime: // 实现返回键的点击事件 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); // 在这里进行点击判断 return false; } return super.onKeyDown(keyCode, event); } public void

Android自定义对话框实现QQ退出界面

效果 首先看下qq的效果图,点击菜单按钮后点退出就会出现如图的对话框. 从上图可以看出,该对话框有一个圆角,以及标题,提示信息,两个按钮,按钮颜色是白色,按钮点击后背景会变成灰色,正常状态下对话框的背景色是白色.并且除了点击取消按钮和返回键外,点击屏幕其他区域该对话框不会小时.那么现在我们来实现一下这个对话框.我们实现后的效果如下图所示 实现 首先编写我们的背景,背景默认情况下是白色的,并且有一个圆角,使用shape实现 <?xml version="1.0" encoding=

Android两次后退键退出

转载请注明出处:http://blog.csdn.net/javacattle/article/details/41964045 只要在 *.Java 文件中添加即可 private int back = 0; //===============back两次退出===================== @Override public boolean onCreateOptionsMenu(Menu menu) {//必要的改变 menu.add(0, 2, 2, "退出"); re

Android“再按一次退出程序”的具体实现

Android应用中许多退出程序的方式都是在你点击了返回按钮的时候,它弹出一个信息"再按一次退出",这个和时候我们只需要在按一次返回按钮,程序就退出了,有的 时候时间间隔是3秒或者其他的时间间隔,今天我就简单说一下实现原理. 其实实现还是比较简单的,我们需要在Activity中覆盖一个方法:public void onBackPressed():这个方法在返回键被点击的时候调用,覆盖这个方法之后我们重写它的实现: <span style="white-space:pre

Android按两次提示退出应用

转载请标明:http://blog.csdn.net/u012637501 Android按两次提示退出应用,核心思想是:在主Activity中重写onKeyDown方法,其是一个回调方法,即当用户按下键盘某个按钮时,我们可以根据键盘码判断按下的是哪个按键.然后,判断计算两次按下返回键的时间间隔(如3s),实现两次按下返回键是否退出应用. 具体实现代码如下: /*---onKeyDown方法:按两次返回键退出--*/ public boolean onKeyDown(int keyCode, K

Android 再谈handler

今天在做http网络事件的响应网络接收处理一般不能放在主线程中使用,目前也只会使用AsyncTask进行处理!之前虽然写过handler处理的一些文章但是发现全不会了!无奈~ 关于handler某位兄弟已经整理的很透彻了!现在引用下原话如下: Handler监听者框架:子线程是事件源,主线程是监听者.Handler作为子线程的监听器出现:主线程中生成Handler的子类,并重写handleMessage(Message msg) 方法,用来对子线程响应.子线程调用Hanlder的sendMess