Fragment延迟加载
来源:互联网 发布:神优化单机游戏低配 编辑:程序博客网 时间:2024/06/05 17:52
Fragment使用最多的地方应该就是ViewPager和TabLayout结合,实现类似微信既可以点击也可以左右滑动进行切换页面。或者使用Drawerlayout侧栏通过FragmentTransaction.add()、show()、hide();实现类似最新版Gmail侧栏点击切换。
在实际开发中,考虑性能和体验等方面,需要在页面可见时,再加载数据。这样就有两种情况:1,在页面第一次可见时,加载数据,往后再次进入到该页面,需要手动刷新重新获取数据;2,无论何时,只要页面可见,都自动刷新加载数据。如下图所示:
第一种情况:
第二种情况:
一,Viewpager+Fragment
这种模式下,是通过方法setUserVisibleHint进行控制fragment是否可见。其中,要调用mViewPager.setOffscreenPageLimit(2); 缓存两个页面,防止切换时销毁fragment
/** * viewpager切换时调用,而且是在onCreateView之前调用 * @param isVisibleToUser true:用户可见 */@Overridepublic void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { isVisible = true; onVisible(); } else { isVisible = false; onInVisible(); }}
private void onVisible() { if (isFirst && isVisible) { onLazyLoad();// isFirst = false; // 控制fragment可见时,是否自动加载数据。 } } /** * fragment可见时再加载数据 */ public abstract void onLazyLoad();
其中的onLazyLoad方法在子类实现数据的加载。
二,FragmentTransaction.show(fragment)
这种情况和上面的有所不同,调用的方法是onHiddenChanged。
/** * 使用add(), hide(),show()添加fragment时 * 刚开始add()时,当前fragment会调用该方法,但是目标fragment不会调用; * 所以先add()所有fragment,即先初始化控件,但不初始化数据。 * * @param hidden */@Overridepublic void onHiddenChanged(boolean hidden) { super.onHiddenChanged(hidden); if (!hidden) { isVisible = true; onVisible(); } else { isVisible = false; onInVisible(); }}
好了,源码地址https://github.com/XYScience/DelayFragment
本人水平有限, 如有错误, 欢迎指正, 以免误导他人
1 0
- fragment延迟加载
- ViewPager+Fragment延迟加载
- ViewPager+Fragment 延迟加载
- Fragment延迟加载
- Fragment延迟加载
- ViewPager+Fragment延迟加载
- Fragment延迟加载
- ViewPager+Fragment延迟加载
- android fragment 延迟加载数据
- Android Fragment延迟加载数据
- ViewPager+Fragment取消预加载(延迟加载)
- Fragment延迟加载技术(解决Viewpager预加载fragment)
- android viewpager中的fragment 延迟加载数据
- Fragment延迟加载(实时更新)
- 一对多广播,Fragment延迟加载
- ViewPager+Fragment取消预加载(延迟加载)
- ViewPager+Fragment取消预加载(延迟加载)
- ViewPager+Fragment取消预加载(延迟加载)
- 一切都是问题,一切都着落在自身
- 集合框架_05_ArrayList集合
- 【中级】字符串运用-密码截取
- Android--获取当前系统时间
- HDU 4216 Computational Geometry?【dp
- Fragment延迟加载
- jsp中的一些标签和EL表达式的使用
- 坦克小战结尾篇之子弹
- toj 4601 好老师
- Redis初识:2.通过初始化脚本启动Redis
- eMMC分区详解
- dispatch_set_target_queue
- 电子锁
- APPRTC分析系列0--grunt过程分析0