方法一:
private static Boolean isExit = false;
private static Boolean hasTask = false;
Timer tExit = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
isExit = false;
hasTask = true;
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("TabHost_Index.java onKeyDown");
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(isExit == false ) {
isExit = true;
Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();
if(!hasTask) {
tExit.schedule(task, 2000);
}
} else {
finish();
System.exit(0);
}
}
return false;
}
方法2:
public class BackActivity extends Activity {
private static final String TAG = "BackActivity";
private long mLastBackTime = 0;
private long TIME_DIFF = 2 * 1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
long now = new Date().getTime();
if (now - mLastBackTime < TIME_DIFF) {
Log.d(TAG, "back, finish");
return super.onKeyDown(keyCode, event);
} else {
Log.d(TAG, "after 2s, toast");
mLastBackTime = now;
Toast.makeText(this, "再点一次将推出", 2000).show();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
}
建议用方法2
原文连接:http://gundumw100.iteye.com/blog/1561861