项目中有ViewPager无限滑动的需求,起初考虑Fragment的复用
即先初始化好三个Fragment实例放到列表里,每个getItem根据position取余返回已经创建好的Fragment实例,下面是遇到的问题
如果使用FragmentPagerAdapter
在源码里看
@Override
public Object instantiateItem(ViewGroup container, int position) {
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
final long itemId = getItemId(position);
// Do we already have this fragment?
String name = makeFragmentName(container.getId(), itemId);
//这里由于是复用Fragmeng实例,所以返回的fragment不为null,就导致无限滑动的时候无法重走生命周期,永远都是

项目中使用ViewPager实现无限滑动,尝试复用Fragment以提高性能。然而,FragmentPagerAdapter存在复用问题导致异常,而FragmentStatePagerAdapter虽然解决此问题,但强制保存状态导致无法复用。若不通过反射修复,复用将不可行。最终,为了避免闪动,选择在onPageSelected中刷新数据,但这牺牲了预加载效果。
最低0.47元/天 解锁文章
827

被折叠的 条评论
为什么被折叠?



