美文网首页
ViewPager+Fragment(懒加载)

ViewPager+Fragment(懒加载)

作者: Timeschang_e07c | 来源:发表于2020-10-01 11:20 被阅读0次

    viewpage+fragment 比如下面有navitation 的menu有五个itme  T1 T2 T3 T4 T5 

    什么是缓存页面?什么是预加载?

    缓存是开辟一个空间预加载是向空间存放东西,如果设置为setOffscreenPageList(1),从T1 到    T3 会缓存T2和T4,回预加载T4,

    setOffscreenPageList(2) 左右各缓存2个 加上当前 缓存了5个,设置0无效还是缓存左右各1个。如果左边或者右边没有页面则不缓存。

    setOffscreenPageList(1)预加载 t1到T3 会预加载T4   从T3到       t2会预加载

    预加载越多就会越卡顿累计到后面就会OOM,懒加载实现就很必要(微信,头条..都是运用的懒加载)。

    懒加载

    从T1 到T3  setUserVisibleHint(boolean isvisible)次函数为非生命周期函数先执行

    T3 FALSE   T1 FALSE  T2 TRUE

    执行3的生命周期函数

    1.setUserVisibleHint(boolean isvisible)//判断Fragment是否可见(如果可见加载,不可见停止)

    上面的方法预加载的T3是false 加载控件需要确定ui初始化 ,所以需要设置tag  isViewCreated()判断Fragment走OnCreatView方法

    2.我们手动设置的isViewCreated()方法在OnCreatView设置成true 默认是false.由于非生命周期先执行所以 一直是fase不能显示页面。一直显示加载。所以显示和终止的方法写在setUserVieibleHint()是不安全的  放在onCreatView()里面直接写

    3从不可见到可见才算可见   从可见到不可见才算不可见 记录上一次是什么状态,上一次 是false这一次是ture才可见

    4Fragment 跳转到activity的时候 当前Fragment 停下。分别执行fragment的onPause() 和onResume()中增加分发

    5Fragment里面嵌套Fragment

    比如T1一个Frgment T2 Fragment里面有子Fragment 加载T1的时候会加载T2l里面的子fragment预加载了

    需要判断Fragmetn是否真的可见,运行到有子fragment的父fragment 里面不加载问题需要手动分发

    ViewPager2

    setUserVisibleHint(boolean isvisible) 这个方法过时,用setMaxLifeCircle()代替处理差不多方式不一样。缓存方面第一代用的poplate 加适配器  第二代用的是recycleview的缓存机制

    相关文章

      网友评论

          本文标题:ViewPager+Fragment(懒加载)

          本文链接:https://www.haomeiwen.com/subject/cymeyktx.html