顶部导航条+Viewpager+Fragment取消页面预加载

效果如图:

顶部导航条+Viewpager+Fragment取消页面预加载_第1张图片顶部导航条+Viewpager+Fragment取消页面预加载_第2张图片

在项目开发中常常会使用到多页面数据显示以及加载,但是在项目中使用view+fragment做多页面显示的时候会有些问题,如加载数据时间长导致页面滑动卡顿。

如何让来解决这些问题呢?我们可以使用取消预加载来使页面显示哪一页就加载哪一页的数据,原本系统提供的有个setOffscreenPageLimit方法可以,但是使用setOffscreenPageLimit只缓存一个页面,那么每次切换页面都会重新加载数据,这样还是导致用户体验不好。

这里可以使用Fragment的生命周期来完成取消预加载这么个功能。

1:初始化页面数据

顶部导航条+Viewpager+Fragment取消页面预加载_第3张图片

2:在其中一个fragment实现onResume(),setUserVisibleHint(),onCreateView()

顶部导航条+Viewpager+Fragment取消页面预加载_第4张图片

onresume是生命周期方法,在onstart方法之后调用,在该方法过后这个fragment就处于活动显示中了,方法里面getUserVisibleHint()这个方法是页面是否显示了。页面显示则调用getdata()。

getdata方法里面有init这个变量,这个变量是用来判断该fragment的onCreateView是否被调用,因为在onCreateView方法里给init赋值为true,init=true;调用了这个方法说明该fragment正在被显示。

setUserVisibleHint方法里面有一个bool参数,这个也是fragment的一个方法,每次切换到该页面都会调用setUserVisibleHint方法,参数表示页面是否显示。

这样可以保证数据在每个fragment显示的时候才去服务器请求数据,这样解决卡顿问题,重新加载问题。

demo下载地址:http://download.csdn.net/detail/leifengpeng/8511227

你可能感兴趣的:(Android)