正好在网上看到了一个,研究了一下,保存下来吧。


第一步,定义一个变量,用于标识是否退出

boolean isExit;

第二步,重写Activity中onKeyDown方法

@Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK) {            exit();            return false;        } else {            return super.onKeyDown(keyCode, event);        }    }

第三步,写一个退出方法,名称就是onKeyDown中的exit()

public void exit(){        if (!isExit) {            isExit = true;            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();            mHandler.sendEmptyMessageDelayed(0, 2000);        } else {            Intent intent = new Intent(Intent.ACTION_MAIN);            intent.addCategory(Intent.CATEGORY_HOME);            startActivity(intent);            System.exit(0);        }    }

第四步,根据exit()方法中的的消息,写一个Handler

Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub            super.handleMessage(msg);            isExit = false;        }    };



实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。

在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。

如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出的方法。

更多相关文章

  1. Android消息通知(notification)和PendingIntent传值
  2. location of the android sdk has not been setup in the prefer
  3. wm命令使用方法(修改android 分辨率)修改
  4. android中在子线程中更新UI的几种方法
  5. Android Studio调错误方法
  6. Android动态设置Margin的方法
  7. java.lang.Exception: 密钥库文件不存在: ~/.android/debug.keys

随机推荐

  1. Android的硬件加速
  2. Android 消息处理机制1(从源码分析)
  3. android 滑动指引页的设计
  4. day02 数据存储和界面展现(1)
  5. Android studio 插件安装
  6. Android设置透明、半透明等效果
  7. Android中Toast如何在子线程中调用
  8. android avd配置路径
  9. Mac配置Android环境变量
  10. 百度地图JS使用