方法一:
建立一個baseActivity,然後讓其他的activity繼承它
之後在baseActivity中加入以下代碼代碼即可
<span style="font-size:18px;">@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
private void exit() {
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getBaseContext(), "再按一次退出程式", Toast.LENGTH_LONG).show();
exitTime = System.currentTimeMillis();
}else{
finish();
System.exit(0);
}
}</span>
方法二:
判斷兩次點選傳回鍵的時間差,如果小于一定時間,如2秒,則退出函數
<span style="font-size:18px;"> private long firstTime = 0;
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
long secondTime = System.currentTimeMillis();
if (secondTime - firstTime > 2000) { //如果兩次按鍵時間間隔大于2秒,則不退出
Toast.makeText(this, "再按一次退出程式", Toast.LENGTH_SHORT).show();
firstTime = secondTime;//更新firstTime
return true;
} else { //兩次按鍵小于2秒時,退出應用
System.exit(0);
}
break;
}
return super.onKeyUp(keyCode, event);
}
</span>
方法三:
利用線程延時處理
private int mBackKeyPressedTimes = 0;
@Override
public void onBackPressed() {
if (mBackKeyPressedTimes == 0) {
Toast.makeText(this, "再按一次退出程式 ", Toast.LENGTH_SHORT).show();
mBackKeyPressedTimes = 1;
new Thread() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
mBackKeyPressedTimes = 0;
}
}
}.start();
return;
else{
this.activity.finish();
}
}
super.onBackPressed();
}