Android ViewPager+Fragment 懒加载处理

2022-03-15  本文已影响0人  没有了遇见
效果.gif

日常项目中无可或缺的会用到ViewPager嵌套Fragment的操作,以及Fragment中再嵌套Fragment的这种复杂嵌套的操作.由于ViewPager的缓存机制就会加载多个Fragmen页面导致加载速度变慢,这个时候我们就用到了Fragment 懒加载操作了

懒加载: 就是懒驴拉磨 打一鞭走一步即,触发执行 不触发不执行

示例.png

示例效果实现是基于 ViewPager+FragmentStatePagerAdapter+Fragment

上述效果要实现懒加载需要首先学习Fragment在ViewPager中的生命周期执行

Fragment的创建以及离开和回到页面的生命周期

 Fragment 创建生命周期:
  setUserVisibleHint() ->onAttach -> onCreate -> onCreatedView -> onActivityCreated -> onStart -> onResume ->onPause ->
  onStop ->   onDestroyView -> onDestroy -> onDetach

  
 Fragment 离开流程():
  默认缓存数左右一个
  缓存数内执行: ->setUserVisibleHint(false)  不执行onPause的操作
  缓存数外执行: ->setUserVisibleHint(false) ->onPause() ->onStop() ->   onDestroyView() -> onDestroy() -> onDetach()(执行销毁操作)


 Fragment 重新展示:
 缓存数内执行: setUserVisibleHint(true) 不执行onResume()的操作
 缓存数内执行: setUserVisibleHint(true) ->onAttach() ->oncreate() ->onCreatedView() -> onViewCreated() ->onStart ()-> onResume()(执行创建操作)

创建.png 离开重新展示的生命周期.png

*由上边的生命周期数据可以得出ViewPager+Fragment,切换Fragment的时氛围两种情况

由上边的生命周期可以看出要实现懒加载主要用到的方式是setUserVisibleHint()此方法在页面要是展示在前台的和处于后太的时候被调用

image.png

实现方式

总结

Fragmen 懒加载分为好多种情况 所以要做到具体问题具体分析,这里只处理ViewPager+Fragment的这种方案 不处理单独添加Fragment的懒加载方案.以后将基于上边的两种实现方式处理Fragment的懒加载

写作不易,欢迎点赞

上一篇 下一篇

猜你喜欢

热点阅读