Android开发之两种方式实现连续点击两次返回键退出程序
2015-07-30 22:24
751 查看
经常看到很多程序点击一下返回键会显示再按一次退出程,然后连续点击两次返回键就退出程序了。虽然心里对这种功能实现方式有了一种大概想法,但是一直也没有去总结过。现在觉得如果项目中加上这个小功能还是很方便的,所以总结了一下实现方式,下面和大家分享两种方式。
第一种:
首先定义一个boolean型变量用于标示是否退出
然后重写Activity中的onKeyDown方法,代码如下:
再根据onKeyDown用到的消息写一个写一个Handler,代码如下:
最后再来理一遍基本原理,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了BACK键,此时isExit的值已为true,则会执行退出的方法。
第二种:
其实第二种就是把第一种进行了简化,可以用第一种来理解这种方法,用第二种在自己的项目中实现。
直接重写Activity中的onKeyDown方法就可以了,代码如下:
原理和上面的一样,我就不再重述了,相信大家完全可以看懂。
第一种:
首先定义一个boolean型变量用于标示是否退出
boolean isExit;
然后重写Activity中的onKeyDown方法,代码如下:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { 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); } return false; } else { return super.onKeyDown(keyCode, event); } }
再根据onKeyDown用到的消息写一个写一个Handler,代码如下:
Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); isExit = false; } };
最后再来理一遍基本原理,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了BACK键,此时isExit的值已为true,则会执行退出的方法。
第二种:
其实第二种就是把第一种进行了简化,可以用第一种来理解这种方法,用第二种在自己的项目中实现。
直接重写Activity中的onKeyDown方法就可以了,代码如下:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if((System.currentTimeMillis()-exitTime) > 2000) //System.currentTimeMillis()无论何时调用,肯定大于2000 { Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); } return true; } return super.onKeyDown(keyCode, event); }
原理和上面的一样,我就不再重述了,相信大家完全可以看懂。
相关文章推荐
- android 定时器的使用
- android 定时器的使用
- android 定时器的使用
- android 定时器的使用
- Android开发基础之菜单键的使用
- android 定时器的使用
- android 定时器的使用
- android 定时器的使用
- android 定时器的使用
- [Android问答] px、dp和sp,这些单位有什么区别?
- android 定时器的使用
- android 定时器的使用
- Android 多媒体开发学习之撕衣服
- Android中Activity切换时共享视图元素的切换动画(4.x兼容方案)
- android开发步步为营之69:Activity通过设置Theme模拟对话框效果
- 最流行的android组件大全
- Android 使用了aidl时,进行混淆
- Android中Handler的简单应用(二)
- Android编译系统详解(三)——编译流程详解
- android xml android:gravity 和 android:layout_gravity 区别