实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行AppExit方法。
在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>