在做一个即时通信的应用的时候,由于每次都要登录,并且要一直保持通信, 如果按返回键后会退出应用,这样对用户的体验不是很好,所以想到了微信和QQ的返回键回到桌面的效果,于是进行了重写onkeyDown()方法,发现解决了该问题.
/**
* 设置返回键不关闭应用,回到桌面
*
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
Intent backHome = new Intent(Intent.ACTION_MAIN);
backHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
backHome.addCategory(Intent.CATEGORY_HOME);
startActivity(backHome);
return true;
}
return super.onKeyDown(keyCode, event);
}
这是用来实现当用户本来不小心点到了返回键的时候,提示再按一次返回键才退出应用.
/**
* 这里用来实现,再点一次返回键退出应用
* @param keyCode
* @param event
* @return
*/
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}