android viewpager中的fragment中的RecyclerView的adpter.notifyDataSetChanged不起作用

今天在写viewpager中的fragmnent的时候遇到了奇怪的问题,我的fragment中用了RecyclerView,而我的viewpager中有多个这样的fragment,业务要求最后实现在具体代码上就是这些fragment中要互相通信,当然了,考虑到fragment中的生命周期和外面的viewpager也要通信,所以我采取了比较稳的办法,就是通信全部用广播来做,我的fragment的数量是11个的,而且不能销毁滑过的页面,因为一销毁,再次访问的时候,就得重新刷新数据,这个用户体验不是很好,可是最后问题出来了,广播通知出去了,各个fragment也接收了,list的数量也变化了,notifyDataSetChanged对象指向刷新也没有任何问题,问题就是,如果两个fragment的下标间隔超过一个,这个notifyDataSetChanged什么用都没有,可奇怪的是在相邻两个fragment之间发广播,notifyDataSetChanged是没有任何问题

     我起初一直认为是notifyDataSetChanged是不是认为对象没有任何变化所以什么事情都不做,可后来发现相邻两个fragment之间又是没有任何问题的,这就排除了notifyDataSetChanged的问题,后来注意到viewpager的预加载机制,也就是

    viewPager.setOffscreenPageLimit(1)这句话,

如果不写这句话,他就认为是一个,也就是说,他会缓存当前页面的前一个后和后一个,我没有时间去看系统源码,因为项目比较着急,所以当我想到这里的问题的时候,我把这个 (1)改成了11,也就是我的fragment的数量的时候,发现我前面的问题都不是问题了,顺利解决掉,后来仔细想了下这个原因,虽然说那些fragment还活着,但是viewpager默认为我当前只有三个页面活着,且叫活着吧,认为其余的都是沉睡的(就这么比喻吧),所以我再去发广播,他虽然能收到广播,也能接收到数据,但就是认为睡着了,不给刷新页面,这也是为什么我改成让他预加载11个之后,就没有任何问题的原因,但是这样做的后果就是这11个fragment一旦牵扯到数据量比较大,大到内存撑不住的时候(目前单个app只有32M) 这个页面可能直接崩溃,这样就要建议做数据持久化,内存消耗百分比去防止崩溃了

当然了,如果你有更好的办法,那更好,希望不吝赐教!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值