Android Fragment懒加载

Android基础之Fragment常用技巧(懒加载) 1、简介 该篇博客是以记录Android开发中Fragment的使用技巧。作为开发中的大头,这一块还是有必要好好了解一下的。包括其生命周期包括其重要特性等,主要研究了fragment的懒加载以及fragment生命周期的使用和调用过程。 优雅的懒加载实现 开发也有一段时间了,不能说一直忽略懒加载,但是由于之前一直没有很好的掌握,故而希望借这次机会真真正正的把懒加载... 阅读详情

Android Fragment懒加载

BaseLazyFragment

/**
 * Fragment 懒加载 + MVP
 *
 * @author machangbao
 * @date 2019年03月08日
 */
public abstract class BaseMvpLazyFragment<P extends BaseContract.IPresenter> extends BaseMvpFragment<P> {

    protected boolean isActivityCreated;    //Activity是否已创建
    protected boolean isVisibleToUser;      //Fragment是否对用户可见
    protected boolean isDataInitiated;      //Fragment是否已加载过数据

    /**
     * After
     * <pre>
     *     @Override
     *     public void onActivityCreated(Bundle savedInstanceState) {
     *         super.onActivityCreated(savedInstanceState);
     *          initData() ;
     *     }
     * </pre>
     * {@link com.ando.base.base.BaseFragment#onActivityCreated}
     */
    @Override
    protected void initData() {
        isActivityCreated = true;
        prepareFetchData();
    }

    /**
     * @deprecated Use {@link FragmentTransaction#setMaxLifecycle}
     */
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        this.isVisibleToUser = isVisibleToUser;
        prepareFetchData();
    }


    public boolean prepareFetchData() {
        return prepareFetchData(false);
    }

    public boolean prepareFetchData(boolean forceUpdate) {
        if (isActivityCreated && isVisibleToUser && (!isDataInitiated || forceUpdate)) {
            /*
             * 在该方法中初始化 Fragment 的数据
             * <p>
             * initLayout -> initViews -> onActivityCreated -> initData -> initLazyData
             */
            initLazyData();
            isDataInitiated = true;
            return true;
        }
        return false;
    }

    protected abstract void initLazyData();

    public void setDataInitiated() {
        this.isDataInitiated = true;
    }

    /*******************************todo 多种空视图处理方式待优化**********************************/
}

BaseMvpFragment

public abstract class BaseMvpFragment<P extends BaseContract.IPresenter> extends BaseFragment implements BaseContract.IView {

    protected P mPresenter;

    @Override
    protected void initMvp() {
        super.initMvp();
        initPresenter();
        if (mPresenter != null) {
            mPresenter.attachView(this);
        }
    }

    protected abstract void initPresenter();

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mPresenter != null) {
            mPresenter.detachView();
            mPresenter = null;
        }
    }

    @Override
    public void showError(String msg) {

    }

    @Override
    public void complete() {

    }
}

BaseContract

public interface BaseContract {

    interface IView {

        /**
         * 请求错误
         */
        void showError(String msg);

        void complete();
    }

    interface IPresenter<T> {
        /**
         * 绑定
         *
         * @param view view
         */
        void attachView(T view);

        /**
         * 解绑
         */
        void detachView();
    }
}
AD7920实战:从咪头到ADC的音频信号采集电路设计全解析(附电路图) 本文详细解析了基于AD7920 ADC芯片的音频信号采集电路设计全流程。从驻极体咪头的驱动、AD8542运放的两级增益与偏置设计,到关键的抗混叠滤波器配置,以及ADC接口的驱动缓冲与PCB布局要点,提供了完整的实战指南与电路图,帮助开发者实现高质量音频信号采集。 阅读详情

相关推荐

STM32驱动2.8寸TFTLCD屏幕实战:从看懂原理图到点亮第一个像素(基于ILI9341)

本文详细介绍了如何使用STM32驱动2.8寸TFTLCD屏幕(基于ILI9341驱动芯片),从硬件连接到软件配置,包括FSMC接口设置、ILI9341初始化序列、坐标设置及基础绘图函数实现。文章还提供了常见问题排查指南和性能优化技巧,帮助开发者快速解决屏幕不亮等问题,并提升显示性能。

weixin_42665255的博客 267

MVP初步实践

对于一个基本的Android项目,我们在初学的时候的做法通常都是直接在xml中绘制界面,然后在对应的Activity中做一些响应操作。而一旦项目的稍微有点规模,就会导致Activity变得越来越大。这样的后果就是当我们需要对界面进行修改的时候会导致很难查找,并且由于所有的操作都在activity中,耦合度很高,当修改某一处的时候,可能会涉及到多个方面,从而需要修改多处。 解决这个问题的方法...

zip_tts的博客 398

在没有信用卡的情况下怎么申请谷歌云(Google Cloud)?

这笔额度足够用来跑一台云服务器、部署小型网站,甚至可以尝试 AI、机器学习等项目。但问题来了——想要拿到这 300 美元,你必须先通过支付方式验证。默认选项就是绑定一张国际信用卡(Visa、MasterCard 之类),然而不少人没有信用卡,或者信用卡无法支持国际支付,结果就卡在注册第一步。很多人会疑惑:既然是送额度,为什么还要绑卡?原因其实很简单:谷歌需要确认你是真实用户,而不是批量注册薅羊毛;通过支付验证,后续如果你用完 300 美元额度,可以直接进行付费使用;

m0_74824483的博客 5654

Mvp实战心得(二)---Base基类的封装

转载请标明出处:http://www.jianshu.com/p/651146bd0688 本文出自:Jlanglang 基类: 在开发中有着很重要的地位,基类设计封装的好,不管是对app的性能,还是对开发的效率都有着很重要的作用 基类可以简单几个字概况,一个良好的父类. 结构: 不管你的app是多个acitivity,还是1个activity+n个fragment,还是多个acitivity多个

u011414643的专栏 1114

Depth Anything 3实战:如何用DINOv2 Transformer一键生成3D高斯点云?

本文详细介绍了Depth Anything 3(DA3)模型如何利用DINOv2 Transformer架构,实现从单张或多视角图像一键生成高质量3D高斯点云。DA3通过统一的深度-射线表示和自适应注意力机制,简化了传统复杂的3D重建流程,并可直接微调用于3D高斯渲染,为图形学、CV和内容创作领域提供了高效的端到端解决方案。

postgres8guard的博客 722

基于FPGA的DDR学习——1.基础知识

⚪DDR2(Double Data Rate2)SDRAM是由JEDEC(电子设备工程联合委员会)开发的第三代SDRAM内存技术标准,1.8V工作电压,240线接口,提供了相较于DDR SDRAM更高的运行效能与更低的电压,同样采用在时钟的上升/下降沿同时进行数据传输的基本方式,但拥有两倍于上一代DDR内存预读取能力(即4bit数据预取能力),其常见的频率规范有DDR2 400\533\667\800\1066\1333等,总线频率553MHZ的DDR2内存只需133MHZ的工作频率。

qq_44932488的博客 2070

Android MVP Base类的封装,内存泄漏,代理,多presenter,注解依赖等封装

三年前写过一段时间Android的代码,后面又开始做一些跨平台的工作,比如之前的react-native ,现在的flutter 等,现在想重新找一份工作,思虑再三,还是把Android 捡一捡。 废话不多说,先封装个base MVP 框架记录一下 简单的介绍一下MVP思想,它是将View 层与Model 层彻底隔离,意味着View 和 Model 都不再持有对方的引用,它们通过一个叫做Presenter 的第三者来代理事务的传递,所有Presenter 层会持有Model 与View 层的引用。如下图

半身风雪 2678

使用FloodRisk2插件进行洪水风险评估

入汛以来,长江流域持续的强降雨使得沿岸多地成为洪水风险极高地区,抗洪、抢险、救灾继新冠病毒之后成为又一个攻坚阵地。如何科学地评估洪水风险,是快速决策的关键。 实际生活中,根据风险是否可控,一般将洪水风险大致分为两类:一类是通过数据分析可以得出其发生的可能性和后果,如强降雨引发的区域性洪水、水库/大坝溃决洪水等。这类洪水可以通过有关资料分析和设定一定条件计算得到可能的损失后果,也就是说,风险可以预判。另一类洪水风险基本是未知的,如滑坡堵塞河道形成堰塞湖引发的洪水,无法预知事件发生的地点和规模,具体的洪水风险无

QGISClass的博客 2879

MVP+Retrofit+Rxjava+ButterKnife+Fresco+Recyclerview+GreenDao+泛型+完整Demo

GreenDao 集成步骤 外部  build.gradle 第一步: mavenCentral() // add repositor 第二步: classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin 内部  build.gradle 第三步 apply plugin: 'o

zuimeirensheng的博客 796

基于C++和Basler SDK的相机开发详解

Basler相机是德国Basler公司生产的高性能工业相机,具有高分辨率、高帧率和低噪声的特点。Basler相机广泛应用于机器视觉、工业自动化、医疗影像和安防监控等领域。高分辨率和高帧率:能够捕捉清晰、细腻的图像。多种接口:支持USB、GigE、Camera Link等多种接口,方便不同应用场景的需求。丰富的配置选项:支持多种图像格式、分辨率和帧率的配置,适应不同的应用需求。本文详细介绍了如何基于C++和Basler SDK进行相机开发,涵盖了从环境搭建、相机连接、图像采集到图像处理的完整过程。

qq_38334677的博客 2100

Sigrity SPEED2000 General SI Simulation模式如何进行信号仿真分析操作指导-DDR

本例是几个简单的板载DDR颗粒的结构,本例中使用General SI Simulation模式仿真DDR信号,结构拓扑如下,Addcmd,clk,cke都是T拓扑。Sigrity SPEED2000 General SI Simulation模式可以对信号进行仿真分析,仿真将电源视为理想电源,以下图为例进行说明。DQS的接收端模型设置为DQS_34_ODT60_1333。模式如何进行信号仿真分析操作指导-DDR。附带驱动和接收端的IBIS模型。

weixin_54787054的博客 512

Android简单实用的MVP框架

前言 MVP模式是Android目前一个非常流行的框架,相信很多人在项目中或多或少的使用过它,相比经典的MVC,MVP更加适用于Android应用的开发,在这里我们就不再对它们之前的差别进行详细分析了,相信大部分人都已经非常的了解了,现在让我们单刀直入的写一个实用的MVP框架吧。由于本人能力水平有限,并且也是我第一次写博客,有不正确的地方还望大家多指正或者有更好的想法我们多交流,毕竟增强自身本领才...

Android 开发架构 801

YOLOv13添加轻量化的EMA模块Faster_EMA,轻量又涨点!map50提升4.56个点,召回率提升9.66!

本文介绍了YOLOv13模型的优化移植方法,通过添加Faster_EMA模块和超参数调整,使模型性能显著提升。主要修改包括:1) 创建新的模型配置文件yolov13-Faster_EMA.yaml;2) 在tasks.py中添加新模块;3) 修改__init__.py和block.py文件,新增Partial_conv3和DropPath类。优化后模型mAP50提升4.56%,召回率提升9.66%,验证了改进方案的有效性。代码实现了局部卷积和随机深度等先进技术,为YOLO系列模型性能优化提供了新思路。

FJN110的博客 2605

安卓性能优化之懒加载(Fragment中数据的懒加载)

1、背景:为什么需要懒加载。       我们在做安卓项目的时候,经常会有一个使用场景:ViewPage与多个Fragment组合使用。               然而,viewpager有着预加载机制:默认一次加载当前页面前后两个页面,即使设置setOffLimit(0)也没有效果。  虽然预加载优化了app的体验效果,但是这样把我们看不到的页面的数据也加载了,大大降低了性能,浪费...

vic6329063的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

安卓 碎片fragment的懒加载 fragment只加载一次 用到的时候才加载

本人小菜鸟一枚, 并且记性十分不好, 所以在此把自己用过的东西记录一下, 以免长时间不用的话会忘记, 如果有哪里写的不对的地方, 希望各位大佬多多指正, 以免误导后面的童鞋,不胜感激!  fragment的懒加载,顾名思义,就是在用到这个fragment的时候才把它的内容加载出来.这样可以防止一次同时加载大量不必要的资源,减少流量的消耗,在一定程度上提高我们APP的运行效率.

dashan618的博客 1892

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

安卓Fragment资源懒加载

多个Fragment放到一个Activity里面,Activity启动时会同时加载所有Fragment资源,造成卡顿现象。实际情况我们想要的是只加载当前显示的Fragment资源即可,即懒加载模式,使用Fragment的setUserVisibleHint和getUserVisibleHint 。

junjle的专栏 624

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

recyclerview 加载fragment_Android仿今日头条N个fragment懒加载

fragment懒加载实现虽然是个小模块,但做过的人都有体会,通常并不会轻易就成功了的,让你辗转反侧,彻夜难眠,绵绵无绝期。我就按照今日头条的样式做了一个懒加载功能。文章到一半会解释大家可能遇到的不加载数据了的坑,先不剧透。这里是今日头条效果:自制效果,有图有真相:实现思路:使用Fragment类自带方法setUserVisibleHint()判断当前fragment是否对用户可见,根据...

weixin_32925455的博客 795

Android Fragment 懒加载

Android Fragment 懒加载 LazyLoaderFragment 源码地址 效果图: ViewPager 的setOffscreenPageLimit() 默认为1 即加载第一个fragment的时候 会预加载第二个。使用懒加载只有在当前fragment显示的时候才会加载 setUserVisibleHint(boolean isVisibleToUser) ...

Scott-fu的博客 503

Android懒加载Fragment

最近在完成需求后在修改代码,发现某些东西写的不恰当,我这边完善下fragment的懒加载。

kururunga的博客 708

安卓:Fragment的懒加载

Android应用开发过程中,ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时若加载的内容较多,就可能导致整个应用启动速度缓慢,影响用户体验。为了提高用户体验,我们会使用一些懒加载方案,实现加载延迟。这时我们会用到getUserVisibleHint()与setUserVisibleHint()这两个方法。

liuliuhelingdao的博客 1484

android——Fragment实现懒加载

效果:   Activity中ViewPager嵌套多个Fragment.当切换到这个这个Fragment时才进行初始化,减少Activity初始化操作 方法:    setUserVisibleHint方法是判断Fragment中的UI控件是否可见的。可以自行实现,在UI控件可见时进行加载的操作。注:setUserVisibleHint是在onCreateView之前调用的,那么在视图未初

调上调下的女生 1475

Android基础之 Fragment懒加载

1、简介 该篇博客是以记录Android开发中Fragment的使用技巧。作为开发中的大头,这一块还是有必要好好了解一下的。包括其生命周期包括其重要特性等,主要研究了fragment的懒加载以及fragment生命周期的使用和调用过程。 阐述一下懒加载主要存在于类似于TabLayout+ViewPager这种包含有缓存中,普通的Fragment切换是不需要懒加载的。 onAttach()–>...

weixin_44795662的博客 170

android懒加载简书,Android之Fragment懒加载分析

Android应用开发时,我们经常会碰到一个Activity内使用ViewPager包含多个Fragment的情况。由于ViewPager的预加载功能,通过setOffscreenPageLimit(int number) 来设置预加载,默认的预加载是1,但是即使你设置为0,也是不起作用的,设置的只能是大于1才会有效果。这无疑会为性能上带来很大影响。解决这个问题有两种方式,一种是禁止ViewPag...

weixin_28910411的博客 412

android懒加载简书,Fragment懒加载

github地址一、简介玩过微信的都知道,微信用的是懒加载的模式,之所以使用懒加载是因为:当使用viewpager+adapter作为应用大的布局时,viewpager会通过setOffscreenPageLimit来设置预加载的项目,不设置setOffscreenPageLimit,则默认为1(设置0无效,可以查看该方法源码知道),也就是当我们打开应用看到的时候fragmentOne时,实际上其...

weixin_36410277的博客 206

Android ViewPager+Fragment 懒加载

Android ViewPager+Fragment 懒加载 在大部分app开发中经常会用到viewpager与fragment组合使用,预加载在不显示后一个fragment时也会进行初始化, 导致在数据量大时 出现不必要的耗时和资源;懒加载就是在fragment显示的时候才初始化当前可见的fragment,减少时间和资源; 直接作为Fragment基类使用 package com.lazyloading.base; import android.content.Context; imp.

Melect的博客 622

android fragment加载数据,Android Fragment 懒加载实践

开发中,Fragment 最常见的两种使用方式就是 ViewPager 嵌套 Fragment ,以及直接通过FragmentManager 来管理 Fragment,对应的交互场景相信大家心里都有一个原型,没有的话也没关系,后边会有例子的。但这和懒加载有什么关系呢?试想一下,如果每个 Fragment 都有默认的网络请求操作(也可能是其它耗时操作,这里以网络请求为例),那么多个在 Fragmen...

weixin_35756130的博客 763
上一篇: GitHub上生成Markdown [TOC] 样式的目录 --- DOM方式实现
下一篇: Android Q & Android 11存储适配(二) FileOperator文件管理框架
风之旅人、
博客等级 码龄11年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值