api 架构

FragmentStatePagerAdapter和Fragme

2019-12-02  本文已影响0人  笑对浮华

二者的区别:

1、当viewpager的adapter继承自FragmentPagerAdapter时,滑动切换fragment,离开视线的fragment没有被销毁掉,依然保存在内存中,当回到之前的fragment会复用之前的。所以一般用于fragment不多的情况。
2、当viewpager的adapter继承自FragmentStatePagerAdapter时,在滑动过程中,离开视线的fragment会被销毁,当回到之前的fragment时会在此创建。所以一般用于fragment较多的情况,不会因为内存占用过大导致用户体验不好。

写这篇文章主要时记录一下我在项目中遇到的问题:
由于之前也看过一些网上的文章,对FragmentStatePagerAdapter和FragmentPagerAdapter有个大致的了解,fragment的多少也没有一个准确的定义,所以我在项目中adapter继承了FragmentStatePagerAdapter,最后在测试阶段就发现了问题,我的view pager中有3-6个fragment不等,当我滑动到最后一个fragment然后再回到前面的fragment时就是出现刷新数据不求网络的bug,ui上表现为一直刷新的状态,日志显示并没有进行网络请求,但通过断点debug,代码又确确实实运行了的,一时百思不得其解,在网上各种搜索也无果,最后脑子里突然闪过一个想法,会不会是因为FragmentStatePagerAdapter的原因,就去修改了继承的类,换成FragmentPagerAdapter之后再运行,之前的问题就不复存在了。
原因我猜测估计就是跟上面介绍的二者却别有关,但具体原因还是不明确,希望也碰到了此类问题的道友留言交流,如果知道其中缘由的大佬能留言为之解惑就最好不过了。

上一篇 下一篇

猜你喜欢

热点阅读