对Fragment加载的理解

对Fragment加载的理解

1.FragmentPagerAdapter和FragmentStatePagerAdapter的区别:

ViewPager默认机制为:预加载当前页及前后两页内容,切换时,会缓存该页及前后两页内容,同时销毁之外的其他Fragment;如果使用的是FragmentPagerAdapter则不会执行onDestroy()方法,而会执行onDestroyView()方法,依然会占用一部分内存;而使用FragmentStatePagerAdapter则会执行onDestroy()方法,释放该Fragment所占用的内存,对于需要占用大量内存的Fragment来说,使用后者能达到节省内存的目的;

2.setOffscreenPageLimit(int count)方法的使用:

count最小值为1,设置小于1的数无效;也就是Viewpager至少缓存当前页及前后两页的内容,如果为2,则缓存当前页及前后四页的内容;

3.Fragment的懒加载:

    有时候我们不需要ViewPager的预加载机制,而setOffscreenPageLimit(int count)方法中的count至少为1,所以可以在Fragment上下功夫,通过重写setUserVisibleHint(boolean isVisibleToUser)方法,当该Frament可见时,再去做加载数据等操作处理,达到懒加载的目的;

   加载数据需要在OnCreateView及Fragment可见双重条件下去执行,而可见与否的回调和onCreateView方法的回调并无严格的先后顺序,所以可以设置两个标识,当onCreateView执行后将标识1置为true,判断是否可见,如果可见则调获取数据方法;当在可见与否的回调中,可见时,将可见标识置为true,判断是否可以加载数据;

4.实现懒加载并取消缓存Fragment的实现:

    此时建议不使用ViewPager,而是用一个ViewGroup动态的去replace替换其中的Fragment,replace先会执行remove操作而后进行add操作,remove掉的Fragment会执行onDestroy方法;可以使用FragmentTransaction.setCustomAnimations()方法,给Fragment切换时设置一个动画,这样可以使切换时不是那么突兀;

    



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值