Android实现 再按一次退出 的三种方法 durationTime、timerTask 和Handler
来源:互联网 发布:数据库巡检报告 编辑:程序博客网 时间:2024/05/20 09:47
目前很多Android应用都会实现按返回键时提示“再按一次推退出”
在这篇文章中总结了各家的方法,一般都是监听Activity的onKeyDown 或者onBackPressed方法
方法一:
直接计算时间差来实现。
final int mDuraction = 2000; // 两次返回键之间的时间差 long mLastTime = 0; // 最后一次按back键的时刻 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) {// 截获back事件 exitApp(); return true; } else { return super.onKeyDown(keyCode, event); } } private void exitApp() { if(System.currentTimeMillis() - mLastTime > mDuraction) { Toast.makeText(this, "再按一次退出", 0).show(); mLastTime = System.currentTimeMillis(); } else { finish(); } }
方法二:
通过Timer定时器来实现按两次退出。
final int mDuraction = 2000; // 两次返回键之间的时间差 private boolean isExit = false; private Timer mTicker = null; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) {// 截获back事件 exitByTimeTicker(); return true; } else { return super.onKeyDown(keyCode, event); } } private void exitByTimeTicker() { if(isExit) { // 退出应用 finish(); } else { // 第一次按back键,弹出提示 Toast.makeText(getApplicationContext(), "再按一次退出", 0).show(); isExit = !isExit; if(null == mTicker) { mTicker = new Timer(); } mTicker.schedule(new TimerTask() { @Override public void run() { isExit = false; // 改变标识 } }, mDuraction); // 如果第一次按back 2秒后没操作,则使用计时器取消退出操作的标识 } }
方法三:
通过Handler机制,判断EXIT_WAIT消息是否存在消息队列中来判断是否是第二次点击Back键
final int mDuraction = 2000; // 两次返回键之间的时间差 private final int MSG_EXIT = 0x0808; private final int MSG_EXIT_WAIT = 0x0810; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) {// 截获back事件 mHandler.sendEmptyMessage(MSG_EXIT); return true; } else { return super.onKeyDown(keyCode, event); } } private Handler mHandler = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case MSG_EXIT: if(this.hasMessages(MSG_EXIT_WAIT)) { // 如果MSG_EXIT_WAIT 还存在MessageQueue中,说明已经按了一次Back键,那么就finish当前activity finish(); } else { Toast.makeText(getApplicationContext(), "再按一次退出", 0).show(); this.sendEmptyMessageDelayed(MSG_EXIT_WAIT, mDuraction); } break; case MSG_EXIT_WAIT: break; default: break; } }; };
1 0
- Android实现 再按一次退出 的三种方法 durationTime、timerTask 和Handler
- Android实现再按一次退出应用程序的方法
- Android中“再按一次退出程序”的实现方法
- Android实现调度任务的三种方式:TimerTask、ScheduledExecutorService、Handler
- Android再按一次退出的两种方法
- Android退出程序时的"再按一次退出"实现
- Android 实现 “再按一次退出” 功能的实现学习
- Android 再按一次退出程序三种办法
- Android程序中“再按一次退出”的实现
- Android再按一次返回键退出程序的实现
- Android“再按一次退出程序”的具体实现
- Android笔记:再按一次退出的实现
- Android三之Handler总结与Timer和TimerTask详解
- Android实现再按一次退出程序
- Android使用Handler与timer及TimerTask结合的方法来实现后台运行定时任务
- android按back键退出程序时,实现“再按一次退出”的功能
- Android中再按一次返回键退出程序的实现(返回桌面)两种方法
- Android-再按一次返回键退出(TabHost实现方法)
- 第13周项目 oj 元音字母
- JAVA导出项目的所有源代码到一个文件
- learning opencv 4-2
- 关于 java InputStream读取数据问题
- Silverlight dataGrid产生自动编号
- Android实现 再按一次退出 的三种方法 durationTime、timerTask 和Handler
- Georgia与Times字体的比较
- navigation高度
- 分享12306全自动验证码识别提交,春运抢票准备时
- tinyxml使用
- 设置Weblogic以提高并发处理性能
- linux 线程学习1
- 分享八个开发技巧,助您薪水更上一层楼
- 每页展示固定条数据的单选本页选择和全选的逻辑及js代码实现