首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Fragment加载新思路

在Android x以前,我们实现加载通常是通过 setUserVisibleHint 方法来控制Fragment是否可见。在Android x之后,Google 提供了新的方案给我们。... * * @param fragment the fragment to have it's state capped....现在我们来看一下 加载 的新方案: 我们先查看一下 FragmentPagerAdapter 类: 新增了一个参数,这个参数用来控制选用哪种模式,现在提供了两种模式,如下: 其中,默认使用的是 BEHAVIOR_SET_USER_VISIBLE_HINT...有了这个特性,我们来试试新的加载方案: demo也很简单,只需要new FragmentAdapter时,传入BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT即可。...测试demo:ViewPager-Fragment1-Fragment2 打开Activity时: 当切换到第二个Fragment时: 可以观察到每次都会执行onResume,所以我们可以将我们的数据加载方法放在

49040
您找到你想要的搜索结果了吗?
是的
没有找到

android ViewPager+Fragment加载

说说写这篇博客的背景吧,前两天去面试,问到一个问题说的是:比如我们首页,是有3个fragment构成的,并且要是实现作用可以滑,那么这个最好的选择就是ViewPager+fragment了,但是我们知道...ViewPager+fragment是做预加载的,然而这种方法有一个坏处,当前页面和预加载页面都有大量的网络请求,可能就会比较慢,这样就会造成不好打体验。...其实我们忽略的一个问题,Android的fragment里面已经帮我们提供了一个方法setUserVisibleHint。setUserVisibleHint()来显示与隐藏Fragment的。...已经初始化完毕,如果网络数据加载,那么请求数据,或者需要强制刷新页面,那么再去请求页面数据,这样就达到了本文开始需要的要求。...", title); fragment.setArguments(args); return fragment; } private String title

85680

android Fragment单页面加载,避免重复加载加载)分析

上面两个页面都是 ViewPager + Fragment实现,Viewpager + Fragment情况下,fragment的生命周期因Viewpager的缓存机制而失去了具体意义 目前问题:每次进入...4个Fragment的生命周期都会走一遍,数据同时请求,这就会造成UI初始化较慢 需求:每次进入只加载当前看到界面数据、切换时请求当前选项卡数据、重复切换只加载一次 具体实现原理: 使用Fragment...但是直接根据isVisible判断就加载数据,可能onCreateView()方法并未执行完毕,此时就会出现NullPointerException空指针异常。...所以就需要满足控件初始化完成,用户可见,才能加载数据。...onFragmentVisibleChange(boolean isVisible) { } @Override protected void onFragmentFirstVisible() { //这里面写请求数据的方法

1.3K10

【Android】Fragment加载和ViewPager的坑

效果图 ANDROID和福利两个Fragment是设置的Fragment可见时加载数据,也就是加载。...加载 加载意思也就是当需要的时候才会去加载 那么,为什么Fragment需要加载呢,一般我们都会在onCreate()或者onCreateView()里去启动一些数据加载操作,比如从本地加载或者从服务器加载...如果加载数据的操作都比较耗时或者都是类似图片的占用大量内存,这时就应该考虑想想是否该实现加载。也就是,当我打开哪个Fragment的时候,它才会去加载数据加载实现?...可以是可以,如果你只是需要数据加载的话,但如果你还有以下的需求,那么这种方式就不行了: 1、如果你在Fragment可见时需要进行一些控件的操作,比如显示加载控件 2、如果你还需要在Fragment...代码 ---- 2016-04-21 更新:该博客封装的加载实现有些不足,比如不支持数据只有第一次打开Fragment时才进行加载的应用场景,因此重新写了篇博客,可以移步至此观看:再来一篇Fragment

1.5K20

androidx下的fragment的lazy加载问题详解

网上关于androidx的fragment加载文章已经有很多,各有侧重。几乎都点到了sexMaxLifecycle和修改FragmentPagerAdapter。...一、前置准备工作 几个关于androidx的fragment加载方案,都离不开如下几个包: androidx.fragment:fragment:1.1.0-alpha07 以上,支持setMaxLifecycle...嵌套Fragment内的ViewPager+Fragment 外层的activity只是add一个fragment /** * fragment内的viewpager内的fragment加载 *...嵌套Fragment内的add show hide Fragment 外层的activity只是add一个fragment /** * fragment内的viewpager内的fragment加载...到此这篇关于androidx下的fragment的lazy加载问题详解的文章就介绍到这了,更多相关androidx fragment lazy加载内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

1.8K20

Android优化方案之Fragment加载实现代码

但是,假如ViewPager的每一个Fragment都需要通过网络拉取数据加载,而ViewPager是默认加载前两项的,所以在很容易造成网络丢包或者网络堵塞等问题,所以Fragment使用加载是非常有必要的...我们可以看到,App会默认加载美女和帅哥两个Fragment,并且它们的生命周期都执行到onStar()方法,同时加载两个Fragment,假如我们在Fragment加载的时候拉取网络数据,那么就会造成如上所说的网络丢包或者网络堵塞等问题...,所以我们为了避免这个问题,就需要实现Fragment加载,当我们对Fragment可见的时候,再进行网络加载数据。...二、实现Fragment加载 针对背景讨论的问题,我们最终要实现的目标就是,当Fragment对我们可见时,我们才进行网络加载,然后再解析数据,更新UI。...最后,附上加载的Demo:Github/LazyFragment 以上就是本文的全部内容,希望对大家的学习有所帮助。

48220

加载(Lazy Loading) – MyBatis加载 – Spring加载

文章目录 加载(Lazy Loading) MyBatis中加载的使用 Spring中加载的使用 加载(Lazy Loading) 加载也叫“延迟价值”,核心思想是把对象的实例化延迟到真正调用该对象的时候...特别是在web应用程序中,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用。...> 在使用的时候(在映射文件XxxMapper.xml中使用),通过在所需要加载的resultMap 的列上加上 fetchType="lazy" ,表明这个数据加载实现的...-- fetchType="lazy" 加载实现数据加载--> <collection property="productList" fetchType="lazy" ofType="com.xgf.mybatis.correlation.many_to_many.bean.Product

1.7K20

【Android】再来一篇Fragment加载(只加载一次哦)

Fragment加载 如果想直接看代码,直接跳到最下面的代码部分和使用介绍即可,如果感兴趣,可以慢慢往下看看我的唠叨。...之前写过一篇 Fragment加载和ViewPager的坑,里面分析了 Fragment 结合 ViewPager 使用时会碰到的一些情况,以及为什么要用加载,如何用,感兴趣的也可以再回去看看。...后来发现,我在那篇博客里封装的 Fragment 基类不足以满足大家的加载需求,所以决定重新来封装一次,这次封装的支持以下的功能: 1.支持数据加载并且只加载一次 2.提供 Fragment 可见与不可见时回调...稍微讲解一下,有些时候,我们打开一个 Fragment 页面时,希望它是在可见时才去加载数据,也就是不要在后台就开始加载数据,而且,我们也希望加载数据的操作只是第一次打开该 Fragment 时才进行的操作...除了加载,只加载一次的需求外,可能我们还需要每次 Fragment 的打开或关闭时显示数据加载进度。

1.5K70

vue路由加载及组件加载

一、为什么要使用路由加载 为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题。 二、定义 加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载。...三、使用 常用的加载方式有两种:即使用vue异步组件 和 ES中的import 1、未用加载,vue中路由代码如下           import Vue from 'vue' ​...​ path: '/', ​ name: 'HelloWorld', ​ component:HelloWorld ​ } ​ ] ​ }) 四、组件加载...相同与路由加载, 1、原来组件中写法 ​ ​ ​ 1111 ​ ​...: 1、vue异步组件实现路由加载 component:resolve=>(['需要加载的路由的地址',resolve]) 2、es提出的import(推荐使用这种方式) const HelloWorld

1.5K30

关于加载数据的获取

需求是:想要在页面中拿到加载数据和图片, 就需要通过scroll滚动来模拟用户的操作 来把一些加载数据 真正的加载出来, 最后去拿数据就可以了, 最后拿到数据后,需要自动回到顶部 难点1:加载数据...,没有加载的情况下 盒子的高度是没有撑开的,也就是说我们滚动的距离没法确认 难点2:加载的时候 不确定 啥时候能确定加载数据加载完了?...需要某种机制来默认判断 需求明确了之后,思路: 页面加载进来之后,先把scroll的滚定值调为999999 然后监听window的scroll事件, 这里有一个技巧, 当没有滚动空间的时候, scroll...的滚动事件即为无效滚动, 然后在我们的window的scroll事件当中 写一个防抖, 当超过1、2秒时间的无限滚动时, 就视为没有更多加载数据了, 此时回到顶部,并移除window的scroll事件

46810

图片加载

图片加载 场景 一个网页会包含很多的图片,例如淘宝京东这些购物网站,商品图片很多,如果在首页就全部加载的话,会影响渲染速度(比如出现白屏)和浪费带宽,为了解决以上问题,提高用户体验,就出现了加载方式来减轻服务器的压力...,优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能。...原理 一张图片就是一个img标签,浏览器是否发起请求图片是根据img的src属性,所以实现加载的关键就是,在图片没有进入可视区域时,先不给img的src赋值,这样浏览器就不会发送请求了,等到图片进入可视区域再给...实现 加载loading图片进行占位 判断哪些图片要加载 将loading图片替换真图片 <img src="....}, interval); } }) } } // <em>懒</em><em>加载</em>

2.3K20

mybatis 延迟加载加载

因为只有在用户需要的时候再去查询数据库,可以大大提高数据库性能 2.什么是延迟加载? 就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。 3.延迟加载实现思路?...(一对一,一对多) 数据库关系,一个账户对应一个用户,一个用户对应多个账户,如下 ?...现在已经学会配置延迟加载了,明白什么是延迟加载了嘛?...不不明白,再看看下面的测试你可能就知道了, 什么是用到的时候去查数据库了,加载(延迟加载)的精髓 延迟加载效果 测试1 public class Account implements Serializable...当遍历到user的时候,框架会通过account类的id开始去查询user,并完成封装 ,这就是加载

2K30

bean加载

下面就是深入源码探究,会分析以下三种情况: bean A没有引用任何其他bean,且配置成加载 bean A引用了bean B,且bean A配置成加载 bean A引用了bean B,bean A...没有配置为加载,bean B配置为加载 首先代码入口还是 AbstractApplicationContext#refresh方法,其中在 AbstractApplicationContext#finishBeanFactoryInitialization...bd.isLazyInit(),会判断bean是否为抽象类、单例、加载,如果不符合就不会执行if里的代码,其实第一、二中情况都不符合的,所以不会执行到if语句里的代码.关键是第三种情况,分析思路之前这篇...也就是在创建bean A的时候,在实例化其属性时,会创建bean B,有兴趣的朋友可以打断点调试,以下总结: bean配置lazy-init="true"时,在容器初始化时不会创建该bean 若一为单例且非加载的...bean A引用了加载bean B时,在bean A被创建时,会创建bean B 非单例或为抽象类或配置lazy-init="true"的bean,都不会在容器初始化时创建bean

75030

Android - 加载

今天我们来聊一聊ViewPager+Fragment加载。 1.什么是加载,为什么要用加载?...预加载功能会暴露一个问题,比如我刚进入加载首页的数据,但是因为有预加载功能,那么就会执行下一个Tab对应的Fragmeng的生命周期,如果我下一个Tab页数据量小还好,如果我有比较耗时的操作或者网络请求...2.加载解决方式 2.1 尝试设置setOffscreenPageLimit(失败) 之前想既然setOffscreenPageLimit可以设置,那我就将其设置为0,结果“然并卵”,查看源码如下:...image.png 也就是你设置的setOffscreenPageLimit要大于1才可以生效 2.2 试试加载 我们先来看看我们的页面: ?...加载进阶 我们上面说的是一层的ViewPager加Fragment,但大家也一定遇到过Fragemgt中又来了一层ViewPager+Fragment,如图: ? 那这种的怎么办呢?

1.2K20
领券