效果如图:
在项目开发中常常会使用到多页面数据显示以及加载,但是在项目中使用view+fragment做多页面显示的时候会有些问题,如加载数据时间长导致页面滑动卡顿。
如何让来解决这些问题呢?我们可以使用取消预加载来使页面显示哪一页就加载哪一页的数据,原本系统提供的有个setOffscreenPageLimit方法可以,但是使用setOffscreenPageLimit只缓存一个页面,那么每次切换页面都会重新加载数据,这样还是导致用户体验不好。
这里可以使用Fragment的生命周期来完成取消预加载这么个功能。
1:初始化页面数据
2:在其中一个fragment实现onResume(),setUserVisibleHint(),onCreateView()
onresume是生命周期方法,在onstart方法之后调用,在该方法过后这个fragment就处于活动显示中了,方法里面getUserVisibleHint()这个方法是页面是否显示了。页面显示则调用getdata()。
在getdata方法里面有init这个变量,这个变量是用来判断该fragment的onCreateView是否被调用,因为在onCreateView方法里给init赋值为true,init=true;调用了这个方法说明该fragment正在被显示。
在setUserVisibleHint方法里面有一个bool参数,这个也是fragment的一个方法,每次切换到该页面都会调用setUserVisibleHint方法,参数表示页面是否显示。
这样可以保证数据在每个fragment显示的时候才去服务器请求数据,这样解决卡顿问题,重新加载问题。
demo下载地址:http://download.youkuaiyun.com/detail/leifengpeng/8511227