總結:使用FragmentStatePagerAdapter 代替 FragmentPagerAdapter作為大批量內容頁的適配器。
詳細:
最近App里有一個場景,類似猿題庫做題那種:有很多個題目,通過左右滑動來切換。
我們的解決方案是使用ViewPager + FragmentPagerAdapter,里面的題目都是用Fragment承載的。
在實際使用中,發現Fragment的onDestroy方法沒被觸發。
我們希望的內存管理是“按需加載”
比如有5個fragment
1 2 3 4 5
我們希望當滑動到3的時候,2、4完成了初始化,1、5被釋放(如果有)
很可惜FragmentPagerAdapter雖然按需加載,但是釋放沒有被執行。
后來發現了安卓原生就提供了一個按需加載的類FragmentStatePagerAdapter,適用於大批量內容頁下,節省內存。它的工作方式像ListView一樣,當頁面對用戶不可見的時候,摧毀該頁面,只保留狀態的信息,因此能節省很多內存