ViewPager预加载问题和onCreateView多次调用问题的解决
2015-07-24 15:44
323 查看
1,在使用ViewPager嵌套Fragment的时候,由于ViewPager的几个Adapter的设置来说,都会有一定的预加载(默认是左右各一个Frament)。通过设置setOffscreenPageLimit(int number) 来设置预加载的数量,在V4包中,默认的预加载是1,即使你设置为0,也是不起作用的,设置的只能是大于1才会有效果的。我们需要通过更改V4包中的默认属性才可以。
2.限制预加载,会出现滑动过程中卡顿现象。其实Fragment中防止预加载主要是防止数据的预加载,Fragment中的View预加载是有好处的,我们可以通过Fragment中的一个方法来达到预加载View 但是不加载数据,在Fragment显示的时候才去加载数据。
2.限制预加载,会出现滑动过程中卡顿现象。其实Fragment中防止预加载主要是防止数据的预加载,Fragment中的View预加载是有好处的,我们可以通过Fragment中的一个方法来达到预加载View 但是不加载数据,在Fragment显示的时候才去加载数据。
public class AppsFragment extends Fragment { private View rootView; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { /** * 防止Fragment多次切换时调用onCreateView重新加载View */ if (null == rootView) { rootView = inflater.inflate(R.layout.layout_smart_apps, null); // init(); /** * 为了保证一开始加载Fragment的时候判断是否需要加载数据 */ if (getUserVisibleHint()) { // 加载数据 } } else { /** * 缓存的rootView需要判断是否已经被加过parent, * 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。 */ ViewGroup parent = (ViewGroup) rootView.getParent(); if (parent != null) { parent.removeView(rootView); } } return rootView; } @Override public void setUserVisibleHint(boolean isVisibleToUser) { /** * 判断此Fragment是否正在前台显示 * 通过判断就知道是否要进行数据加载了 */ if (isVisibleToUser && isVisible()) { // 加载数据 } super.setUserVisibleHint(isVisibleToUser); } }
相关文章推荐
- jquery预加载图片的方法
- javascript图片预加载实例分析
- js中Image对象以及对其预加载处理示例
- 关于图片的预加载过程中隐藏未知的
- 使用ViewPager实现高仿launcher左右拖动效果
- js 利用image对象实现图片的预加载提高访问速度
- Android Fragment 基本了解(图文介绍)
- 浅析js预加载/延迟加载
- Android Fragment的使用方法(翻译)
- 实现轮转广告带底部指示的自定义ViewPager控件
- 自定义RadioButton和ViewPager实现TabHost带滑动的页卡效果
- 使用ViewPager实现android软件使用向导功能实现步骤
- Android基础之使用Fragment适应不同屏幕和分辨率(分享)
- Android中给fragment写入参数的轻量开发包FragmentArgs简介
- Android ViewPager相册横向移动的实现方法
- jQuery实现预加载图片的方法
- js预加载图片方法汇总
- Android中fragment嵌套fragment问题解决方法
- Android基础之Fragment与Activity交互详解
- Android基础之使用Fragment控制切换多个页面