Android按back鍵不退出當前Activity
阿新 • • 發佈:2019-01-25
一般預設情況下,我們按back鍵的時候,會執行Activity的onDestroy方法,銷燬當前例項。
有些情況下,不想銷燬,只是想切換到後臺,即回到桌面程式。那麼有兩種方法可以設定,重寫Activity的onBackPressed()方法,或是重寫onKeyDown方法
1、使用moveTaskToBack方法:
重寫onKeyDown
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK){ moveTaskToBack(true); return true; } return super.onKeyDown(keyCode, event); }
重寫onBackPressed
@Override
public void onBackPressed() {
moveTaskToBack(true);
}
方法:public boolean moveTaskToBack(boolean nonRoot)
activity裡有這個方法,引數說明如下:
nonRoot=false→ 僅當activity為task根(即首個activity例如啟動activity之類的)時才生效
nonRoot=true→ 忽略上面的限制
這個方法不會改變task中的activity中的順序,效果基本等同於home鍵,都是回到桌面
應用場景:
比如有些activity諸如引導圖之類的,使用者在按返回鍵的時候你並不希望退出(預設就finish了),而是隻希望置後臺,就可以調這個方法
2、使用startActivity回到桌面
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK){ Intent i = new Intent(Intent.ACTION_MAIN); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addCategory(Intent.CATEGORY_HOME); startActivity(i); return true; } return super.onKeyDown(keyCode, event); }
或
@Override
public void onBackPressed() {
// moveTaskToBack(true);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}