方法一
调用的是sendEmptyMessageDelayed判断两次按back的时间差是否大于两秒,如果大于两秒就对falg赋值false
最后不要忘了移除所有消息,防止内存溢出
handler.removeCallbacksAndMessages(null)
public class MainActivity extends ActionBarActivity {
private boolean falg=false;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
falg=false;
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if(event.getKeyCode()==KeyEvent.KEYCODE_BACK&&!falg){
falg=true;
Toast.makeText(MainActivity.this, "再次按back退出程序", 0).show();
handler.sendEmptyMessageDelayed(1, 2000);
return true;
}
return super.onKeyUp(keyCode, event);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
handler.removeCallbacksAndMessages(null);
}
}
方法二 两次按back的时间差
public class Month2_Activity extends ActionBarActivity {
private long clickTime = 0; //记录第一次点击的时间
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void exit() {
if ((System.currentTimeMillis() - clickTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次后退键退出程序",
Toast.LENGTH_SHORT).show();
clickTime = System.currentTimeMillis();
} else {
this.finish();
}
}
}