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