在AppExit方法中,会首先判断isAppExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。
如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行AppExit方法,此时isAppExit的值已为true,则会执行退出的方法。
转发自 http://blog.csdn.net/carterjin/article/details/7677069
第一步:定义退出标志位
private boolean isAppExit; // app退出标志位
第二步,重写Activity中onKeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.d(TAG, "onKeyDown------>");
if (keyCode == KeyEvent.KEYCODE_BACK) {//
AppExit();
return false;
} /*else if (keyCode == KeyEvent.KEYCODE_HOME) {
return false;
}*/ else {
return super.onKeyDown(keyCode, event);
}
}
第三步,写一个退出方法,名称就是onKeyDown中的AppExit()
public void AppExit() {
if (!isAppExit) {
isAppExit = true;
Toast.makeText(mContext, R.string.app_exit, Toast.LENGTH_LONG)
.show();
handler.sendEmptyMessageDelayed(APPEXIT, 2000);
} else {// 2s内再次按back时,isExit= true,执行以下操作,app退出
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
System.exit(0);
}
}
第四步,根据AppExit()方法中的的消息,写一个Handler
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case APPEXIT:
isAppExit = false;
break;
default:
break;
}
};
};
R.string.app_exit: string.xml 定义 :
<string name="app_exit">再按一次, 退出应用程序! </string>