只要添加如下代码即可实现:
private long mExitTime;
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
if ((System.currentTimeMillis() - mExitTime) > 2000)
{
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();
}
else
{
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
但在继承了TabActivity的Activity中貌似用以上方法不可实现,可以改为以下代码即可(方法很臃肿,高手勿喷):
private long mExitTime;
private static int keyCodeBackCount;
public boolean dispatchKeyEvent(KeyEvent event)
{
++keyCodeBackCount;
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0)
{
if ((System.currentTimeMillis() - mExitTime) > 2000
|| keyCodeBackCount % 2 == 0)
{
if (keyCodeBackCount % 2 == 1)
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();
}
else if (keyCodeBackCount >= 3)
{
keyCodeBackCount = 0;
System.exit(0);
}
return true;
}
return super.dispatchKeyEvent(event);
}