最近做项目突然想到要加上这个功能,然后就想有什么实现方法。
第一种:首先想到的是使用一个布尔型标志flag
1、如果flag是true,则关闭。
2、如果flag是false就修改为true并提示再按一次,然后开个线程延迟两秒后修改flag为false。
首先在MainActivity中添加一个内部类:
class closeApp implements Runnable{
@Override
public void run() {
isClose = false;
}
}
然后重写finish方法,如下:
public void finish() {
if (!isClose) {
Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show();
isClose = true;
Handler handler = new Handler();
handler.postDelayed(new closeApp(), 2000);
}else {
super.finish();
}
}
OK,这样就实现了点击两次返回关闭应用的功能。不过为这个功能单开一个线程貌似有点低效率。
第二种:不就是两次点击之间间隔小于某个值就退出嘛。那就记录一下上次点击事件然后做差就可以了。
只要重写finish方法,如下:
public void finish() {
if ((System.currentTimeMillis() - perExitTime) > 2000) {
perExitTime = System.currentTimeMillis();
Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show();
}else {
super.finish();
}
}