Android中ViewPager常用功能6----viewpager和Fragment结合时懒加载
来源:互联网 发布:药物制剂论文数据统计 编辑:程序博客网 时间:2024/06/05 23:03
关于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()这个方法,源码如下:
/** * 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;}
具体代码如下:
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
阅读全文
0 0
- Android中ViewPager常用功能6----viewpager和Fragment结合时懒加载
- Fragment结合ViewPager之懒加载
- Fragment结合ViewPager之懒加载 1
- Android ViewPager + Fragment懒加载
- 实现ViewPager+Fragment的懒加载功能
- Android - Fragment+ViewPager结合使用
- ViewPager和Fragment的结合
- ViewPager+Fragment懒加载
- Viewpager Fragment懒加载
- ViewPager+Fragment懒加载
- ViewPager+Fragment懒加载
- viewPager fragment 懒加载
- fragment viewpager 懒加载
- Android 在 ViewPager 中使用 Fragment 的懒加载
- 【Android】Fragment懒加载和ViewPager的坑
- 【Android】Fragment懒加载和ViewPager的坑
- 【Android】Fragment懒加载和ViewPager的坑
- Android中viewpager+fragment
- 解决使用tomcat-redis-session-manager httpSessionLinster监听功能失效问题
- 浅谈XSS—字符编码和浏览器解析原理
- openssl rsa公钥验签名
- The specified JRE installation does not exist
- bootstrap上传插件fileinput自动上传&成功回调
- Android中ViewPager常用功能6----viewpager和Fragment结合时懒加载
- vue简单购物车功能
- HDU-1863--畅通工程---最小生成树
- jquery学习路线
- 基于opencv的对图像的垂直翻转
- 51nod 1109 01组成的N的倍数(bfs)
- thinkphp 回滚事件
- leetcode 235. Lowest Common Ancestor of a Binary Search Tree
- Android Studio错误:无法启动守护程序进程