一个做个Fragment懒加载的方法

最近的身体过敏了,很不舒服,所以一直在调整状态,所以谅解一下,最近有看到有人问怎么实现Fragment的懒加载,然后我之前也看过大神写过的LazyFragment,其实也挺好的,但是我在做项目的时候,要做到懒加载并没有使用到LazyFragment,而是重写一个方法,这个方法类似懒加载,反正好用到不行,其实懒加载无非就是判断这个Fragment是否是展示出来的,如果是第一次展示出来,那么就要加载数据,然后加载了之后,数据在不需要刷新的状态其实都是不用重新访问的,所以我们首先在Fragment中重写什么方法呢?其实就是这个:

public void onHiddenChanged(boolean hidden) {

    }

看名字估计都知道什么意思啦,就是当隐藏状态改变之后的方法,每一次改变Fragment显示的状态都会调用一次这个方法,当然,还有一开始初始化这个Fragment的时候也会调用一次,所以我们把数据放在这里去加载也可以做成懒加载的效果啦,但是我们要主要,要加一个标识,是否是初次加载的标识,因为Fragment加载了数据之后,没有标识的话,重新显示还是会重新加载一次的,所以要注意啦,我们可以在Fragment隐藏的时候去做一些保存数据的操作,然后显示展示出来(ps:不保存,界面显示出来,数据还是完整的,不用担心),而且必须使用show()和hide()这两个方法切换,不然这个回调是不会触发的,要注意咯,然后还有一个弊端,就是第一个加载出来的页面是肯定不会调用这个方法的,后面没有加载出来的都会触发一次回调,所以这个使用有限制性,但是如果需求合适,那么不用重写Fragment那就剩下很多时间了,下面看看源码吧,毕竟还是要走一下源码的

/**
     * Called when the hidden state (as returned by {@link #isHidden()} of
     * the fragment has changed.  Fragments start out not hidden; this will
     * be called whenever the fragment changes state from that.
     * @param hidden True if the fragment is now hidden, false otherwise.
     */
    public void onHiddenChanged(boolean hidden) {
    }

看介绍就知道这个是当fragment hidden状态改变之后调用的,而且源码说的很明白了,Framgents start out not hidden,意思是Fragment一开始不是隐藏的,this will be called whenever the fragment changes state from that,意思这是所有fragment改变状态的开始,很明白了吧,简单来说就是一开始Fragment是显示的,不会调用这个方法,然后当fragment状态改变的时候才开始调用这个方法,例如使用了hide()方法
我们平时可能会用到isHidden()这个方法去判断Fragment是否显示,其实这个方法的参数hidden就是isHidden返回的值啦,今天就说这么多吧,我继续休息去了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值