文章目录
介绍
- 介绍
- 1. 此功能的意义
- 2. 功能实现
- 3. 代码实现
在项目中,经常会看到这样的“再按一次退出程序”的小功能需求。
最常见的实现方式:
- 多线程 Handler( )
- 计时器 Timetask( )
作为一名程序猿,理解功能的使用场景能有助于选择更好地方式进行功能开发:
- 问:为什么要做一个让用户点两次才能退出的功能呢?这不是明显加大了用户退出的操作成本吗?
- 答:对于移动使用场景,用户的注意力分散,容易出现误操作行为,通过点击两次才能退出是为了降低用户误操作退出的概率
通过在需要退出页面的 Activity 里复写 onKeyDown()
方法实现功能逻辑,从而实现该功能。
//声明一个long类型变量:用于存放上一点击“返回键”的时刻
private long mExitTime;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//判断用户是否点击了“返回键”
if (keyCode == KeyEvent.KEYCODE_BACK) {
//与上次点击返回键时刻作差
if ((System.currentTimeMillis() - mExitTime) > 2000) {
//大于2000ms则认为是误操作,使用Toast进行提示
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
//并记录下本次点击“返回键”的时刻,以便下次进行判断
mExitTime = System.currentTimeMillis();
} else {
//小于2000ms则认为是用户确实希望退出程序-调用System.exit()方法进行退出
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}