美文网首页android技术
Android模仿微博的LazyFragment懒加载 - (2

Android模仿微博的LazyFragment懒加载 - (2

作者: liyihuanx | 来源:发表于2021-06-22 00:38 被阅读0次

    上次留下了两个问题
    1.在跳转到其他页面回来时,会怎么样?
    2.在子Fragment中又有一个viewpager+Fragment又会怎么样?

    问题1

    并不会怎样,只是回来的时候不会去分发加载数据的事件而已啧
    所以我加上这样一段代码,用一个变量去判断,不需要可以不写,但是我想想你跳转了别的页面,回来数据Fragment数据应该会变,所以分发一下


    image.png

    问题2

    这里去除掉了其他log,为了看起来清楚点
    我给TowFragment加了一个viewpager,里面有TowFragment1和2
    进入App可以看到,爹都还没显示,儿子先加载了数据?


    image.png

    而且在之后的切换底部Tab,TowFragment里面的两个儿子都无动于衷,只有刚打开App时加载了,连停止加载的方法都没调用到,根本就没有事件分发到儿子那里去


    image.png

    所以我们必须要再做一些根据父亲和儿子的状态再做一些判断
    先解决第一个问题,父Fragment还没显示,子Fragment就加载了数据。这个问题很简单,我们只需要在分发加载数据的事件时,判断一下是否有父Fragment,且是否可见。就可以了

    根据Fragment源码中的这个方法,可以解决上面的问题


    image.png

    比如,父Fragment不可见时直接退出方法,不准分发


    image.png

    但是还有一个问题存在,就是不管怎么切换,子Fragment都不会分发加载或停止加载数据的事件。这是为啥??

    从一开始我们可以看到,在进入HomeFragment时,子Fragment也会分别调用两次setUserVisibleHint方法,在进入前就把自己的可见状态置为true。到底后面的分发事件无效了。

    所以我决定在进入他的父Fragment时,再去调用一次分发事件,真正的加载子Fragment的数据,比如


    image.png

    可以看见切换都是正常的


    image.png

    最后到这里

    这个懒加载的写作思路就这样结束了~ 接下来就是加上SmartRefresh控件去模仿微博的加载模式了(当然只能简陋的模仿)

    相关文章

      网友评论

        本文标题:Android模仿微博的LazyFragment懒加载 - (2

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