zoukankan      html  css  js  c++  java
  • android Viewpager取消预加载及Fragment方法的学习

    1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载。通过设置setOffscreenPageLimit(int number) 来设置预加载的熟练,在V4包中,默认的预加载是1,即使你设置为0,也是不起作用的,设置的只能是大于1才会有效果的。我们需要通过更改V4包中的默认属性才可以。

    更改过的V4 包下载地址:
    http://pan.baidu.com/s/1xtzEA
     
    2.限制预加载,会出现滑动过程中卡顿现象。其实Fragment中防止预加载主要是防止数据的预加载,Fragment中的VIew预加载是有好处的,我们可以通过Fragment中的一个方法来达到预加载View 但是不加载数据,在Fragment显示的时候才去加载数据。
     直接上我项目中使用到的代码:
     @Override
       public void setUserVisibleHint(boolean isVisibleToUser) {
                            //判断Fragment中的ListView时候存在,判断该Fragment时候已经正在前台显示  通过这两个判断,就可以知道什么时候去加载数据了
    if (isVisibleToUser && isVisible() && mPullToRefreshGridView.getVisibility() != View.VISIBLE) {
               initData(); //加载数据的方法
           }
           super.setUserVisibleHint(isVisibleToUser);
       }
    这个方法会在切换到Fragment显示的时候去调用。
    为了保证一开始加载Fragment的时候该方法提前调用,导致的数据不会加载,我在代码中做出了如下的判断:
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    if (getUserVisibleHint() && mPullToRefreshGridView.getVisibility() != View.VISIBLE) {
    initData();
    }
    super.onActivityCreated(savedInstanceState);
    }
       
     
     
    特别注意:
    1.在刚开始加载Fragment的时候,setUserVisibleHint这个方法比onCreated方法执行的还要早。预加载的Fragment就不会执行这个方法。
    2.在VIewPager 切换到某个Fragment的时候,还会调用该方法。
     
    通过在这个方法中去加载数据,我发现可以一定程度的实现预加载问题,保证了预加载不会加载数据,只会加载Fragment中的VIew,这样就可以保证了VIewPager滑动的流畅性,也保证了只有切换到一个Fragment的时候才去加载数据的目的。
    我觉得这种方法比修改V4包中的预加载数量好的多啊。
     
     
     
     





  • 相关阅读:
    实习感悟——从用户中来,到用户中去
    FineUI PK DWZ
    Java入门到精通——工具篇之Maven概述
    信息论的熵
    菜鸟学习Hibernate——一对多关系映射
    StyleCop学习笔记——默认的规则
    StyleCop学习笔记——自定义规则
    StyleCop学习笔记——初识StyleCop
    好博客收藏
    菜鸟学习Hibernate——简单的增、删、改、查操作
  • 原文地址:https://www.cnblogs.com/flyme2012/p/4175510.html
Copyright © 2011-2022 走看看