一、Android 主界面按返回键不退出而是置后台; moveTaskToBack(false);
分析:
activity里有这个方法,具体如下:
public boolean moveTaskToBack(boolean nonRoot) {
try {
return ActivityManagerNative.getDefault().moveActivityTaskToBack(
mToken, nonRoot);
} catch (RemoteException e) {
// Empty
}
return false;
}
实现效果的代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
仅当activity为task根(即首个启动activity)时才生效
这个方法不会改变task中的activity状态,按下返回键的作用跟按下HOME效果一样;重新点击应用还是回到应用退出前的状态;
二、点击两次返回按钮退出应用,再回来时重新进入
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);
}
三、android点击返回键不退出程序,从桌面点击再回来
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.d("zhsy","onKeyDown LoadFragmentActivity");
Intent home = new Intent(Intent.ACTION_MAIN);
// home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
home.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);
return true;
}
return super.onKeyDown(keyCode, event);
}