今天在重构一个项目的时候,在onKeyDown和onBackPressed上开始纠结了。双击退回这个就一段代码而已,并不难。
//双击退出程序
private boolean isExit = false;
@Override
public void onBackPressed() {
// 注意这个地方不能有 super.onBackPressed() 否则点一下就退出了
if (isExit) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
System.exit(0);
} else {
isExit = true;
ToastUtil.show("再次点击返回键退出");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
isExit = false;
}
}, 2000);
}
}
令我纠结的不在这里,于是我做了个小小的研究。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
sy("onKeyDown");
return super.onKeyDown(keyCode, event);
}
重写onKeyDown方法,按返回键两个都会被调用,当然onKeyDown先于onBackPressed这个都没有问题。
于是我把onKeyDown的返回值改为true或者false,惊奇的发现,onBackPressed都不执行 = = 这就很难受了。
To be continued