private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Alert.show("dd");
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 5000) {
Toast.makeText(getApplicationContext(), "再按一次将退出",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
//System.exit(0);
int nPid = android.os.Process.myPid();
android.os.Process.killProcess(nPid);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
一般程序继承Activity onKeyDown 来监听退出事件,但是tabActivity并不能这样,因为它的onKeyDown事件被他的子Activity (有tab嘛)覆盖了,那么问题来了,我总不能在每个Activity写个退出事件把,所以 我们可以用dispatchKeyEvent(KeyEvent event) 方法来监听退出事件
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次将退出",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
//System.exit(0);
int nPid = android.os.Process.myPid();
android.os.Process.killProcess(nPid);
}
return true;//;//true时该事件将不会继续往下传递,false时反之
}
return super.dispatchKeyEvent(event);
}