1. 程式人生 > >Activity巢狀多個fragment時,onResume的處理

Activity巢狀多個fragment時,onResume的處理

問題:當Activity裡有多個fragment時,其中fragmentA根據需求,需要在onResume時需要做請求資料等操作,但是如果直接在fragmentA裡的onResume裡寫東西,當從其他頁面返回到fragmentB和fragmentC時,fragmentA裡的onResume也會走,這樣很浪費流量浪費資源。

問題原因:fragment的生命週期是跟著它所在的activity一起走的,當從其他頁面返回到本activity時,本activity會走onResume的生命週期,這個時候本activity裡的所有fragment也都會走各個fragment重寫的onResume裡的程式碼。

解決方法:

不在fragmentA的onResume裡寫,而改成下面這樣寫,不可見時不操作,可見時再操作:

  1. @Override
  2. publicvoid onHiddenChanged(boolean hidden) {  
  3.     super.onHiddenChanged(hidden);  
  4.     if (hidden) {  
  5.         UtilsTools.Log_e(TAG, " --- 不可見()");  
  6.     } else {  
  7.         initData();  
  8.         UtilsTools.Log_e(TAG, " --- 當前可見()"
    );  
  9.     }  
  10. }