Fragment show hide,replace
阿新 • • 發佈:2018-11-07
使用replace方法是把原有的Fragment替換掉,被替換Fragment 走onDestroy銷燬掉,新Fragment會走onCreate建立一個新的;
使用hide和show方法,舊的Fragment被隱藏,新的被顯示出來,不會走onDestroy、onCreate生命週期。
一般情況下建議使用hide和show組合,因為Fragment反覆建立比較消耗系統資源,如果Fragment中需要載入耗時資料時,建立過程需要重新載入資料,浪費資源。如果要使用addToBackStack時,hide和show組合會有bug;replace和addToBackStack使用不會出現bug。
另外,Fragment hide和show時出會出現重影,原因是app被回收時系統保留了Fragment例項,app在恢復執行時系統會自動拿出儲存的例項,同時程式執行時也會去建立一個例項,存在重複建立,進而出現重影。解決辦法,在activity中重寫
onSaveInstanceState並遮蔽super呼叫,如下:
@Override public void onSaveInstanceState(Bundle outState) { // super.onSaveInstanceState(outState); }