MicroKibaco / CrazyDailyQuestion

每日一问: 水滴石穿,聚沙成塔,坚持数月, 必有收获~
35 stars 1 forks source link

2019-10-24: 说一下fragment懒加载? #52

Open MicroKibaco opened 5 years ago

peiniwan commented 5 years ago

懒加载就是页面对用户可见时再去加载数据 使用add hide() show()方法切换fragment ,不会走任何的生命周期,无法通过生命周期进行刷新,而是使用onHiddenChanged() 当fragment结合viewpager使用的时候,显示隐藏调用的是setUserVisibleHint() 所以需要在这两个方法都判断下,让fragment显示再去加载数据,当然要先判断是否初始化完成

MicroKibaco commented 5 years ago

懒加载的目的是在Fragment对我们可见时,我们才进行网络加载,然后再解析数据,更新UI,从而减少流量浪费,耗时请求。
可见时候,setUserVisibleHint设置为true,否则为false,在可见状态的时候进行网络请求。
但是这里有一个bug,就是数据秒回的时候,ui还没来得及绑定,或者adapter没有及时初始化,那么我们就无法及时更新ui呢,所以我们在数据填充时候,需要通过getUserVisibleHint判断数据是否需要拉取