FragmentPagerAdapter與FragmentStatePagerAdapter的區別


簡介

FragmentPagerAdapter和FragmentStatePagerAdapter是兩種不同的類,用於在Android應用程式中實現PagerAdapter。當使用Android的ViewPager時,會用到這種頁面介面卡。這些頁面介面卡負責管理在ViewPager中顯示的每個頁面的生命週期。這兩個介面卡的共同點是它們都是PageAdapter類的子類。在本文中,我們將瞭解FragmentPagerAdapter和FragmentStatePagerAdapter的區別。

什麼是Android中的介面卡?

Android介面卡是View和底層資料之間重要的橋樑,它有助於填充View。介面卡的作用是從資料來源(例如陣列或資料庫)獲取資料,並將每個專案轉換為在Activity中顯示的結果檢視。它充當View和資料集之間的橋樑,提供對資料項的訪問。Android介面卡本質上是一個用於為View提供資料的專案集合。介面卡從資料來源為View提供資料,並將資料集中的每個專案對映到一個View物件,例如TextView、ImageView或ListView。介面卡充當資料來源和View之間的中介,它負責確定將在View中顯示哪些資料以及如何格式化這些資料。

在Android應用程式中,介面卡用於不同型別的檢視,例如ListView、RecyclerView、底部導航檢視、TabLayout等等。任何具有類似重複格式內容的檢視都可以藉助介面卡來處理。介面卡會將內容設定為要在該檢視中顯示的每個內容。有不同型別的介面卡用於不同型別的檢視。在本文中,我們將瞭解Android應用程式中的FragmentPagerAdapter和FragmentStatePagerAdapter。

什麼是Android中的FragmentPagerAdapter?

FragmentPagerAdapter是PagerAdapter的一種實現,它使用Fragment來管理每個頁面。它將每個頁面表示為一個Fragment,該Fragment保留在記憶體中,儘管如果使用者導航離開頁面,它可能會被暫停或停止。當需要分頁瀏覽少量通常更靜態的Fragment時,例如一組選項卡,這非常有用。使用者訪問的每個頁面的Fragment都將儲存在記憶體中,但其檢視層次結構在不可見時可能會被銷燬。由於Fragment例項可以保留任意數量的狀態,這可能會導致使用大量的記憶體。對於大量頁面,請考慮使用FragmentStatePagerAdapter。

什麼是Android中的FragmentStatePagerAdapter?

另一方面,FragmentStatePagerAdapter會在Fragment對使用者不可見時銷燬它們。當您有大量Fragment或與Fragment關聯的資料是動態的並且可能會隨時間變化時,這非常有用。FragmentStatePagerAdapter是一個Android元件,允許您輕鬆地在Android應用程式中建立滑動選項卡。它的工作原理是為選項卡中的每個頁面建立一個Fragment,然後利用ViewPager來管理這些Fragment。這允許輕鬆地在應用程式的不同頁面之間導航,並在每個頁面之間平滑過渡。

FragmentPagerAdapter和FragmentStatePagerAdapter的區別

FragmentPagerAdapter

FragmentStatePagerAdapter

FragmentPagerAdapter將所有Fragment例項儲存在記憶體中。

FragmentStatePagerAdapter將當前Fragment例項儲存在記憶體中,並將其他Fragment例項的狀態儲存到磁碟。

FragmentPagerAdapter使用更多記憶體。

與FragmentPagerAdapter相比,FragmentStatePagerAdapter使用更少的記憶體。因為它不會同時將所有Fragment儲存在記憶體中。

FragmentPagerAdapter的滾動效能低於FragmentStatePagerAdapter。

FragmentPagerAdapter的滾動效能低於FragmentStatePagerAdapter。

FragmentPagerAdapter適用於少量頁面。

FragmentStatePagerAdapter適用於大量頁面。

結論

總之,“FragmentPagerAdapter”在您需要始終將少量Fragment(即頁面)儲存在記憶體中以提高效能時是一個不錯的選擇,而“FragmentStatePagerAdapter”在您有大量Fragment(即頁面)並希望最佳化記憶體使用和滾動效能,或者與Fragment關聯的資料可能會隨時間變化時是更好的選擇。

更新於:2023年5月8日

670 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.