1. 程式人生 > >Fragment show hide,replace

Fragment show hide,replace

使用replace方法是把原有的Fragment替換掉,被替換Fragment 走onDestroy銷燬掉,新Fragment會走onCreate建立一個新的;

使用hideshow方法,舊的Fragment被隱藏,新的被顯示出來,不會走onDestroy、onCreate生命週期。

一般情況下建議使用hide和show組合,因為Fragment反覆建立比較消耗系統資源,如果Fragment中需要載入耗時資料時,建立過程需要重新載入資料,浪費資源。如果要使用addToBackStack時,hideshow組合會有bug;replaceaddToBackStack使用不會出現bug。


另外,Fragment  hideshow時出會出現重影,原因是app被回收時系統保留了Fragment例項,app在恢復執行時系統會自動拿出儲存的例項,同時程式執行時也會去建立一個例項,存在重複建立,進而出現重影。解決辦法,在activity中重寫

onSaveInstanceState並遮蔽super呼叫,如下:
  @Override
    public void onSaveInstanceState(Bundle outState) {
//        super.onSaveInstanceState(outState);
    }