很多应用都有点击两次返回按键才退出应用的功能,像熊猫直播app。当然也有点击返回按键,弹出对话选择框提示用户操作的,像是爱奇艺app。作为开发者来讲:我觉得这样做的好处是可以防止用户不小心点击了一次返回按键而直接退出应用。
思路:通过重写onKeyDown(int keyCode, KeyEvent event)方法,然后根据用户是否点击了返回按键,然后实现对应的提示操作。这里我设置两次的点击间隔小于2s才能退出应用。
private FragmentManager manager = getSupportFragmentManager();
private long firstTime;// 记录点击返回时第一次的时间毫秒值
/**
* 重写该方法,判断用户按下返回按键的时候,执行退出应用方法
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){// 点击了返回按键
if(manager.getBackStackEntryCount() != 0){
manager.popBackStack();
}else {
exitApp(2000);// 退出应用
}
return true;// 返回true,防止该事件继续向下传播
}
return super.onKeyDown(keyCode, event);
}
/**
* 退出应用
* @param timeInterval 设置第二次点击退出的时间间隔
*/
private void exitApp(long timeInterval) {
// 第一次肯定会进入到if判断里面,然后把firstTime重新赋值当前的系统时间
// 然后点击第二次的时候,当点击间隔时间小于2s,那么退出应用;反之不退出应用
if(System.currentTimeMillis() - firstTime >= timeInterval){
ToastUtil.showToast(this, "再按一次退出程序");
firstTime = System.currentTimeMillis();
}else {
finish();// 销毁当前activity
System.exit(0);// 完全退出应用
}
}
上面主要关注我的exitApp(2000)这个方法就行,因为主要的退出应用的逻辑就在里面。注释写的很清晰,就不多说了。
A little bit of progress every day!Come on!