美文网首页
Fragment的懒加载 setuservisiblehint

Fragment的懒加载 setuservisiblehint

作者: i冰点 | 来源:发表于2017-01-16 10:05 被阅读127次

1、实现不可见不加载的效果---setUserVisibleHint

在ViewPager中使用Fragment,当加载第一个Fragment的时候,会缓存左右几个页面:用户还没有看到的页面,就已经开始加载了。

在刚刚进入的时候:

刚刚进入的时候

再划到可见的时候:


划到可见的时候
@Override public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if(getUserVisibleHint()) { 
        onVisible(); 
    } else { 
        onInvisible(); 
    } 
}

需要注意的是setUserVisibleHint是在onCreateView之前调用的,在视图未初始化的时候,在onVisible当中就使用的话,就会有空指针的异常。可以再onCreateView中设置一个标志位isPrepared,用于标志是否初始化完成。在初始化view之后,设置 isPrepared为true,同时调用onVisible()方法。而在onVisible()当中,判断isPrepared和isVisible只要有一个不为true就不往下执行:仅当初始化完成,并且可见的时候才继续加载,这样的避免了未初始化完成就使用而带来的问题。

参考: Andriod开发技巧——Fragment的懒加载实现ViewPager懒加载的三种方法

2、防止ViewPager中的Fragment被销毁---setOffscreenPageLimit

让View Pager缓存所有页面

pager.setOffscreenPageLimit(N);

相关文章

网友评论

      本文标题:Fragment的懒加载 setuservisiblehint

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