1. 程式人生 > >Android開發— Activity生命週期和fragment的生命週期

Android開發— Activity生命週期和fragment的生命週期

(圖片就借鑑一下其他作者的,見諒!) Activity的生命週期在業務邏輯上的處理一定要慎重!!! Activity生命週期 Fragment的生命週期同樣十分重要,並且要常用frgment懶載入方案更要注意這種方式,其生命週期圖 frgment 同時我們都知道 Fragment 是依賴於 Activity 存在的,它們的生命週期很相似;同樣的有一張圖說明了 在案列和原理得到可以得到: Fragment的onAttach() 和 onCreate() 在與 Activity 第一次關聯時呼叫,onDestroy() 和 onDetach() 在主 Activity 銷燬時才會被呼叫;並且Fragment 通過 addToBackStack() 只涉及到 onCreateView() 和 onDestroyView() 之間的生命週期,所以說add() 和 replace() 不會對 Fragment 的整個生命週期產生影響,但是 add() 方法會造成 主Activity上的Fragment 疊加顯示;在我們開發過程中經常使用Activity,Fragment和ViewPager 結合使用,通過 hide() 、 show() 來隱藏、顯示Fragment,此時 Fragment 只改變了可見性,通過測試這並不涉及fragment和主Activity的生命週期的改變。但是會有Activity資料傳遞到Frgment做處理顯示或者從Frgment資料傳遞到Activity,我的處理辦法都是在Frgment類中建立可訪問方法傳遞資料進去(Frgment向Activity也同樣可以)當然用bundle和採用介面方式也是極好的,這要看個人喜好。 Activity,Fragment和ViewPager 結合使用中,根據需求顯示隱藏特指的Frgment我的採用方式是:

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.add(R.id.fl_activity_XXX, mXXXFragment).commitAllowingStateLoss();
 transaction
             .hide(mXXXFragment)
             .show(mNowFragment);
     //mXXXFragment表示當前的frgment,mNowFragment表示要新增顯示的frgment           
  1. 系統配置改變(螢幕切換等),可在配置檔案中設定android:configChangeds 或者 android:screenOrientation="portrait"
  2. 系統資源不足,Activity按照優先順序從低到高(後臺,可見非前臺,前臺)被銷燬。
  3. 丟擲異常銷燬與重建activity時: 根據需求在AndroidManifest.xml設定啟動模式和在基類中設定
/**
     * 初始化儲存的資料
     */
    protected void initInstanceState(Bundle savedInstanceState) {

    }