Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在这个activity刚创建的时候就变成需要初始化大量资源。有可能会导致卡顿。

就需要用到Fragment里的setUserVisibleHint这个方法里。

解决办法

package com.xgs.panku.ui;

import android.app.Fragment;

/** * 类描述:当切换到这个fragment的时候初始化控件 * 作者:@zyx * 时间:2016/8/22 11:10 * 邮箱:zhangyuanxiao@monster-tld.com */public abstract class BaseFragment extends Fragment{    //判断是否显示    protected boolean isVisible;

    /**     * 在这里实现Fragment数据的缓加载.     * @param isVisibleToUser     */    @Override    public void setUserVisibleHint(boolean isVisibleToUser) {        super.setUserVisibleHint(isVisibleToUser);        if(getUserVisibleHint()){            isVisible = true;            //加载数据            onVisible();        }else{            isVisible = false;            onInvisible();        }    }

    /**     * fragment被设置为可见时调用     */    protected void onVisible(){        isLoading();    }    /**     * fragment被设置为不可见时调用     */    protected void onInvisible(){}    //获取数据的抽象方法    protected abstract void isLoading();}调用方式:
  1. // 判断是否加载
  2. private boolean isPrepared;
  3. @Override
  4. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  5. Log.d(LOG_TAG, "onCreateView");
  6. View view = inflater.inflate(R.layout.fragment_open_result, container, false);
  7. //XXX初始化view的各控件
  8.   isPrepared = true;
  9. lazyLoad();
  10. return view;
  11. }
  12. @Override
  13. protected void isLoading() {
  14. if(!isPrepared || !isVisible) {
  15. return;
  16. }
  17. //填充各控件的数据
  18. }

转载于:https://www.cnblogs.com/zyx20160131/p/5794929.html

多个fragment之间切换加载数据卡顿相关推荐

  1. linux访问文档根目录之外的网页_开发文档加载不再卡顿,亿点点提升

    作为一个头(ku)秃(bi)的开发者,查阅各种文档是家常便饭,但由于中国特色在查阅一些文档时总是加载中.而且有时外场调试还不一定有网,因而将文档本地化是相当有必要的.本文介绍了一种将文档编译为静态网页 ...

  2. 如何解决web端图片加载慢卡顿的问题???

    公司官网上面有一的功能是在后台发布公司动态之后,在前台显示公司动态内容. 但是上上周团建之后,上传的公司动态中的图片加载速度就非常的慢. 图片加载慢的原因有两个: 1.图片过大导致的加载缓慢. 2.网 ...

  3. 在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据

    在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据 如今,最流行的拍照设备智能手机可以捕获高达4K UHD的图像(3840×2160图像),原始数据超过25 MB.即使 ...

  4. spring 启动加载数据_12个很棒的Spring数据教程来启动您的数据项目

    spring 启动加载数据 Spring Data的任务是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍保留基础数据存储的特​​殊特征. 它使使用数据访问技术,关系和非关系数据库, ...

  5. android 移除fragment,Android Viewpager+Fragment取消预加载及Fragment方法的学习

    1.在使用ViewPager嵌套Fragment的时候,由于VIewPager的几个Adapter的设置来说,都会有一定的预加载.通过设置setOffscreenPageLimit(int numbe ...

  6. fragment的懒加载

    1 为什么需要懒加载 用fragment+viewpager+fragmentPagerAdapter作为框架 ,会出现fragment预加载. 2.用setUserVisibleHint()方法可以 ...

  7. PyTorch训练中Dataset多线程加载数据,比Dataloader里设置多个workers还要快

    PyTorch训练中Dataset多线程加载数据,而不是在DataLoader 背景与需求 现在做深度学习的越来越多人都有用PyTorch,他容易上手,而且API相对TF友好的不要太多.今天就给大家带 ...

  8. 【PyTorch训练中Dataset多线程加载数据,比Dataloader里设置多个workers还要快】

    文章目录 一.引言 二.背景与需求 三.方法的实现 四.代码与数据测试 五.测试结果 5.1.Max elapse 5.2.Multi Load Max elapse 5.3.Min elapse 5 ...

  9. Fragment的懒加载与生命周期详解

    提示:本文仅为笔者学习记录 Fragment的懒加载与生命周期详解 什么是懒加载 了解Fragment的生命周期 onAttach onCreate onCreateView onActivityCr ...

最新文章

  1. 安装RADOS gateway(CEPH对象存储)
  2. 简洁高效的linux kfifo环形缓冲区
  3. eureka多台注册中心_spring cloud注册中心之Eureka
  4. 第七届蓝桥杯-剪邮票(深搜+广搜)
  5. DataGridView行号发生变化 使用的事件
  6. Day10(--JSP与JSP内置对象)
  7. Java中方法与数组
  8. erlang中如何调试程序
  9. 2022年新版千月影视APP带H5功能的源码-亲测好用
  10. win10安装steam有损计算机,Win10专业版无法安装steam软件怎么办?
  11. C# 实现的几种在线翻译
  12. JavaScript之排他思想详述
  13. 自定义圆形、半圆形ProgressBar
  14. Kali 如何放大字体与图标
  15. 谷歌地图api 微信小程序_使用Google的融合位置提供程序API进行实时位置跟踪
  16. chown与chmod的区别
  17. Microbiome:微生物组名词定义
  18. 婚宴座位图html5,婚宴怎么安排座位 结婚喜宴座位安排图
  19. qt5之QComboBox用法
  20. 服务器无法替换dll文件,教你如何彻底删除服务器上的残留dll文件

热门文章

  1. java买房子钓鱼,AcWing 1262. 鱼塘钓鱼(Java 贪心 Or 优先队列)
  2. 两个有序数组的合并问题
  3. win7、win8旗舰版系统下载、32位、64位
  4. 2021年第3季度中国跨境进口零售电商市场规模为1166.7亿元 退货中心仓模式将降低企业的成本忧虑
  5. 响铃:什么样的网综才配得上“超级网综”?
  6. spark DataFrame 根据条件替换数据中的值,并保留非条件的原始值
  7. C#---高级|设计模式(1)
  8. 微信定时发送天气python3
  9. Linux用户空间与内核空间内存映射
  10. Java学习day015(日期,格式化)