我来谈谈ViewPager搭配FragmentAdapter的数据丢失问题

先来一张碎片Fragment的生命周期图开开胃......

首先呢,我来介绍一下:

当我们使用Viewpager搭配FragmentPagerAdapter进行滑动的时候,某些情况下会发现前边几页自己手动产生的数据会被清空掉,对于这个碎片的滑动:

它的出现和消失只是和Activity一样,是一个是否在栈顶的关系,当非栈顶碎片出现再栈顶的时候,它就会从碎片的onCreateView这个生命周期开始走到onDestroyView之前,如果你把adapter这种装数据的对象放在了onCreateView及以下的生命节点里,当碎片重新回到栈顶之后,adapter一定会被重新创建,所以数据丢失。。。。解决方案就是将adapter的实例化放在onCreate里。


再来谈谈如果将adapter的实例化放在了onCreateView及以下的解决方案:

 使用setOffscreenPageLimit来设置ViewPager的预加载页数,可以同样保存数据。这个东西它的作用是预加载下x个页面,当我们预加载的页数x大于等于 总页数-1时,也就是说,在第一次如果就预加载了所有的页面,今后的滑动所有页面的每一个生命周期都不会再走一次,相当于栈顶有多个碎片。。。。当然啦,如果不是所有,随着总有一个以上的碎片被压入栈顶以下,肯定会有数据的丢失,除非你把adapter的初始化重放一下位置。。。。 

源码解析(转):http://blog.csdn.net/bob1993_dev/article/details/46491797


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值