Android中ViewPager常用功能6----viewpager和Fragment结合时懒加载
2017-07-28 15:08
399 查看
关于viewpager和Fragment结合,仿微信既能点击又能滑动的选项卡功能已在
http://blog.csdn.net/zhaihaohao1/article/details/76142314 中已实现
但是在切换Fragment时会出现重复加载,我测试了一下加载如下
启动加载 Fragment01 Fragment02 Fragment03 Fragment01 Fragment02
点击Fragment02 时加载 Fragment03
点击Fragment03 时加载 Fragment04
点击Fragment04 时不加载
点击Fragment01 时加载 Fragment01 Fragment02
点击Fragment02 时加载 Fragment03......
那么怎样才能做到,Fragment只在显示时加载,且只加载一次。
通过查看Fragment的源码可以发现它有setUserVisibleHint()这个方法,源码如下:
该方法用于告诉系统,这个Fragment的UI是否是可见的。所以我们只要在这个方法中判断加载数据即可
具体代码如下:
源码下载:
参考文章:
http://www.jianshu.com/p/104be7cd72b6
http://blog.csdn.net/zhaihaohao1/article/details/76142314 中已实现
但是在切换Fragment时会出现重复加载,我测试了一下加载如下
启动加载 Fragment01 Fragment02 Fragment03 Fragment01 Fragment02
点击Fragment02 时加载 Fragment03
点击Fragment03 时加载 Fragment04
点击Fragment04 时不加载
点击Fragment01 时加载 Fragment01 Fragment02
点击Fragment02 时加载 Fragment03......
那么怎样才能做到,Fragment只在显示时加载,且只加载一次。
通过查看Fragment的源码可以发现它有setUserVisibleHint()这个方法,源码如下:
/** * Set a hint to the system about whether this fragment's UI is currently visible * to the user. This hint defaults to true and is persistent across fragment instance * state save and restore. * * <p>An app may set this to false to indicate that the fragment's UI is * scrolled out of visibility or is otherwise not directly visible to the user. * This may be used by the system to prioritize operations such as fragment lifecycle updates * or loader ordering behavior.</p> * * @param isVisibleToUser true if this fragment's UI is currently visible to the user (default), * false if it is not. */ public void setUserVisibleHint(boolean isVisibleToUser) { if(!mUserVisibleHint&& isVisibleToUser && mState < STARED){ mFragmentManager.performPendingDeferredStart(this); } mUserVisibleHint = isVisibleToUser; mDeferStart = !isVisibleToUser; }
该方法用于告诉系统,这个Fragment的UI是否是可见的。所以我们只要在这个方法中判断加载数据即可
具体代码如下:
package com.example.viewpagertest4; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.orhanobut.logger.Logger; /** * A simple {@link Fragment} subclass. */ public class Fragment01 extends Fragment { // 判断加载数据 private boolean isLoadFinish=false; private View view; public Fragment01() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if(view==null){ view= View.inflate(getActivity(),R.layout.fragment_fragment01,null); } return view; } // boolean isVisibleToUser判断fragment页面是否显示 @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(isVisibleToUser&&!isLoadFinish){ Logger.t("222").d("网络请求Fragment01"); // 网络请求加载数据,如果加载完成后把isLoadFinish=true httpNet(); } } /** * 接收到数据 */ private Handler handler = new Handler(){ public void handleMessage(Message msg){ switch (msg.what) { case 1: // 无论显示和不显示,让他都不加载数据,使用下拉刷新时,在重新加载数据 isLoadFinish=true; break; } } }; /** * 模拟网路请求 */ private void httpNet(){ new Thread(){ public void run(){ try { Thread.sleep(3000); handler.sendEmptyMessage(1); } catch (Exception e) { e.printStackTrace(); } } }.start(); } }
源码下载:
参考文章:
http://www.jianshu.com/p/104be7cd72b6
相关文章推荐
- Fragment结合ViewPager之懒加载
- Android中ViewPager常用功能7----画廊效果
- Android开发实现的ViewPager引导页功能(动态加载指示器)详解
- Android 解决ViewPager+Fragment懒加载的问题
- Android - Fragment+ViewPager结合使用
- android 安卓异步加载网络图片,与viewpager结合使用示例
- Fragment结合ViewPager之懒加载 1
- Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android两级导航菜单栏的实现--FragmentTabHost结合ViewPager与Android 开源项目PagerSlidingTabStrip
- Android Fragment+ViewPager 懒加载
- Android ViewPager + Fragment懒加载
- Android开发ViewPager和Fragment结合使用实现新闻类app基本框架(一)
- android控件篇:ViewPager+Fragment+GridView的使用(与AndroidQuery框架结合)
- android ViewPager和FragmentPagerAdapter结合使用
- android viewpager fragment 优化 切换界面 延时加载
- 【转】Android使用Fragment来实现ViewPager的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- Android中ViewPager常用功能3----仿微信既能点击又能滑动的选项卡
- 【Android】 Viewpager+Fragment实现滑动图片的动态加载
- android 中Activity 加载Fragment ;Fragment中加载ViewPager
- Android之Viewpager+Fragment实现懒加载