FragmentStatePagerAdapter和FragmentPagerAdapter

weixin_34023863發表於2016-01-16

在我們Android開發中,ViewPager是我們經常使用的一個元件,而這個元件經常和我們的Fragment結合在一起用,以此來完成滑動來顯示不同的Fragment。我們要管理這裡面的Fragment的切換,可以使用兩種Adapter。FragmentStatePagerAdapter和FragmentPagerAdapter,那麼這兩種方法有什麼區別呢?

定義

  • FragmentStatePagerAdapter
    顧名思義,我們的這個FragmentStatePagerAdapter,在我們切換不同的Fragment的時候,我們會把前面的Fragment銷燬,而我們系統在銷燬前,會把我們的我們Fragment的Bundle在我們的onSaveInstanceState(Bundle)儲存下來。等使用者切換回來的時候,我們的Fragment就會根據我們的instance state恢復出來。

  • FragmentPagerAdapter
    使用這種Adapter,我們的Fragment在切換的時候,不會銷燬,而只是呼叫事務中的detach方法,這種方法,我們只會把我們的Fragment的view銷燬,而保留了以前的Fragment物件。所以通過這種方式建立的Fragment一直不會被銷燬。

怎麼用?

通過上面,我們就可以很容易得出,我們的FragmentPagerAdapter適用於Fragment比較少的情況,因為我們會把每一個Fragment儲存在記憶體中,不用每次切換的時候,去儲存現場,切換回來在重新建立,所以使用者體驗比較好。而對於我們的Fragment比較多的情況,我們需要切換的時候銷燬以前的Fragment以釋放記憶體,就可以使用FragmentStatePagerAdapter。

相關文章