首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    常用控件之ImageView的使用(二)

    问题1:上面就只单一使用了内存缓存来解决图片加载问题,Android 系统为每个应用分配的内存是有限的,假如说我们的图片成千上万,即使现在的 Android 手机硬件都配置很高,也顶不住这样的操作,当内存不足时应用马上会崩溃...当重启应用时,如果图片存在SD卡中,就可以从SD卡中直接获取图片加载。并且SD卡所能存储的图片总数是一定的,会不断的根据策略去舍去图片的存留。...使用者只需要知道加载图片的接口。 对于图片加载框架,内部实现是极其复杂的,目前我们并不需要了解其内部实现方式。 下面我们就使用最常用的图片加载框架 Glide来完成我们图片加载框架使用的演示。...下面请跟我走4步,完成你人生中第一次加载网络图片吧!!! 1.首先我们要通过依赖 Glide 图片加载库。 Glide github 官方地址 2.在官方文档中我们找到需要依赖的 Glide库地址。...4.我们在创建的空 Activity 当中,为 ImageView控件利用 Glide加载图片。 ? okay,搞定!!使用第三图片加载库是不是很简单。

    83710

    Glide类似You cannot start a load for a destroyed activity异常简单分析

    当中请求网络 请求成功后 根据服务器返回的图片URL使用Glide来加载网络图片 ,当点击进入activity 加载网络过程中 退出activity 会报此错 今天有时间就索性研究下这个问题,就做个笔记...挂载的Activity为空导致的 回顾使用的场景,是在联网请求成功之后调用的Glide 当执行到Glide.with();方法时,当前的Activity已经销毁了,所以才导致的这个问题。...Glide加载的工具类来解决这个问题比较好。...; /** * Glide 加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常 * Created by Li_Xavier on 2017/6/20 0020. */ public...加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常 * * @param context * @param url 加载图片的url地址

    37810

    当面试官问你glide的时候,是想问什么?glide生命周期如何实现?

    去面试的时候,我们也经常被问到这样的问题:项目用什么图片加载框架?为什么选择这个框架?glide是现在主流的图片加载框架,被问到的概率非常高。面试官这样问,最想听到的是什么答案?...glide最大的优点 glide最大的优势就是对bitmap的管理是跟随生命周期去发生改变的。其它的框架基本都是用Lru算法,当Activity销毁的时候,是不会释放之前加载图片占用的所有内存。...glide的优势就是当Activity销毁的时候,之前加载的所有图片的内存都释放了。glide是如何做得这一点的,这是我们需要去深挖的地方。...glide如何监听到Activity的生命周期 在看glide相关资料的时候,知道一个结论,glide是通过新建一个空的Fragment去监听Activity的生命周期。...从RequestManagerFragment拿到RequestManager和ActivityFragmentLifecycle RequestManager如果不为空直接返回,如果为空则通过工厂创建一个

    1.7K00

    【面试技巧】当面试官问你glide的时候,是想问什么?glide生命周期如何实现?

    去面试的时候,我们也经常被问到这样的问题:项目用什么图片加载框架?为什么选择这个框架?glide是现在主流的图片加载框架,被问到的概率非常高。面试官这样问,最想听到的是什么答案?...glide最大的优点 glide最大的优势就是对bitmap的管理是跟随生命周期去发生改变的。其它的框架基本都是用Lru算法,当Activity销毁的时候,是不会释放之前加载图片占用的所有内存。...glide的优势就是当Activity销毁的时候,之前加载的所有图片的内存都释放了。glide是如何做得这一点的,这是我们需要去深挖的地方。...glide如何监听到Activity的生命周期 在看glide相关资料的时候,知道一个结论,glide是通过新建一个空的Fragment去监听Activity的生命周期。...从RequestManagerFragment拿到RequestManager和ActivityFragmentLifecycle 2、RequestManager如果不为空直接返回,如果为空则通过工厂创建一个

    89300

    Android开发笔记(一百八十)使用Glide加载特殊图像

    现在有了Glide,轻松加载GIF动图不在话下,简简单单只需下面一行代码: Glide.with(this).load(R.drawable.happy).into(iv_cover); 使用Glide...以加载本地视频的封面为例,首先到系统视频库中挑选某个视频,得到该视频的Uri对象后采用Glide加载,即可在图像视图上显示视频封面。...= null) { // 视频路径非空,则加载视频封面 Glide.with(this).load(uri).into(iv_cover); } }); findViewById...Glide不仅能加载本地视频的封面,还能加载网络视频的封面。当然,由于下载网络视频很消耗带宽,因此要事先指定视频帧所处的时间点,这样Glide只会加载该位置的视频画面,无需下载整个视频。...Glide.with(this).load(URL_MP4).apply(options).into(iv_cover); }); Glide加载网络视频封面的效果如下面两图所示,分别为加载视频第

    1.4K10

    glide的三个坑

    的建议优化措施 不要主动recycle bitmap,把bitmap引用置空,剩余的交给GC去回收就好 bitmap其实可以不用主动recycle,就算调用了recycle也不会立即马上被recycle...,官方的文档也有说明,recycle一般没必要主动调用,GC系统会自行处理 吐槽2:页面回收后,加载图片崩溃 这个问题,也是线上经常发生的,在一些极端情况下,页面被回收了,调用glide去加载图片,...加载,走统一封装的方法,这样的话,也好统一做容错 对glide的建议优化措施 页面销毁后,加载图片不响应并且增加warning的log,没必要触发崩溃 吐槽3:bitmap放大 我们都知道glide加载的...glide会默认把bitmap放大,用以填充Imageview,增加了内存占用,特别是长图,会导致内存极大增加 比如一张800*2400的bitmap,原始大小为7M,加载在一个宽度为1440的手机尺寸上...,高度自适应,那实际imageview的尺寸为:1440 *4320,glide会把biamap缩放到跟imageview一样大,加载后的bitmap大小为23M 本来是一张7M的图片,实际在手机内存中

    2.1K40

    Android经典面试题之图片Bitmap怎么做优化

    图片的压缩 图片的压缩是指我们需要根据View所实际需要的图片尺寸来加载对应大小的图片。一般我们用的图片加载第三方库,比如Glide,都已经帮我们做了处理。...//先解析图片的宽高信息,inJustDecodeBounds为true就只会加载图片的尺寸信息 options.inJustDecodeBounds = true; (2)然后压缩图片 //Resources...内存缓存的作用就是对于内存中已经加载的图片避免重复加载。...Glide会通过引用计数的方式来记录图片被引用的次数,当引用次数为0时,也就意味着图片资源不再被使用嘛,这时就会将图片资源从这个弱引用缓存中移除,并把这个图片资源加入到LRU算法内存缓存中 (3)LRU...Glide会在LRU缓存中的图片被重新使用时将图片资源从LRU缓存中删除,并添加到弱引用的缓存中去。这样做的原因就是防止图片被LRU算法缓存回收。

    7610

    Glide源码分析(一)

    Glide作为一个图片加载框架深受开发者喜欢,包体积小,加载速度快,以及加载圆角等。作为一名开发者我们有必要去了解Glide图片加载机制,它是如何把图片加载出来的?以及在图片加载过程中它都做了什么?...SupportRequestManagerFragment) fm.findFragmentByTag(FRAGMENT_TAG); if (current == null) { // 2.2 如果为空...获取到glide对象很好理解,为何要获取当前界面的生命周期呢?我们都知道图片加载的速度慢于界面加载的速度,通过界面的生命周期,我们就能控制glide是否要继续加载未加载完的图片等,稍后还要继续分析。...从 Glide 注册的 register 中获取请求 model 加载器 List为一个 HttpUrlFetcher 的实例, 接下来我们看看数据加载的流程 1.执行数据加载 public class HttpUrlFetcher implements DataFetcher

    1.5K30

    Android图片加载框架最全解析(五),Glide强大的图片变换功能

    如果你还没有阅读过前面四篇文章的话,那么可以点击后面的链接,依次向前阅读 Android图片加载框架最全解析(四),玩转Glide的回调与监听。...现在运行一下程序并点击加载图片按钮,效果如下图所示。 ? 图片是正常加载出来了,不过大家有没有发现一个问题。...在不应用任何图片变换的情况下,使用Glide加载必应这张图片效果如下所示。 ?...第24-29行是判断缓存池中取出的Bitmap对象是否为空,如果不为空就可以直接使用,如果为空则要创建一个新的Bitmap对象。...下篇文章中我们会继续深入探究Glide,学习一下自定义模块的功能,感兴趣的朋友请继续阅读 Android图片加载框架最全解析(六),探究Glide的自定义模块功能 。

    1.8K101

    Android源码分析:手把手带你分析 Glide的缓存功能

    由于文章较长,希望读者先收藏 & 预留足够时间进行查看 请先阅读文章: Android源码分析:这是一份详细的图片加载库Glide源码讲解攻略 Android图片加载库:最全面解析Glide用法...和 大小压缩等处理后的图片 当使用 Glide加载图片时,Glide默认 根据 View视图对图片进行压缩 & 转换,而不显示原始图(这也是Glide加载速度高于Picasso的原因) 1.2...---- 步骤4:开启 加载图片 线程 若无法从 内存缓存 里 获得缓存的图片,Glide就会开启 加载图片的线程 但在该线程开启后,Glide并不会马上去网络 加载图片,而是采取采用Glide的第2级缓存...---- 步骤9:写入 内存缓存 Glide 将图片写入 内存缓存的时机:图片加载完成后 、图片显示出来前 写入 内存缓存 的具体地方:上篇文章中Android:这是一份详细的图片加载库Glide源码讲解攻略当图片加载完成后...关于内存缓存 的总结 读取 内存缓存 时,先从LruCache算法机制的内存缓存读取,再从弱引用机制的 内存缓存 读取 写入 内存缓存 时,先写入 弱引用机制 的内存缓存,等到图片不再被使用时,再写入到

    2.2K21

    — 1.Glide初始化

    Glide单例的加载 使用过Glide的都知道,调用Glide加载一张图片时,第一句代码便是Glide.with(this),这里肯定就是Glide的入口了,通过这句代码,Glide开始了“漫漫的”初始化之路...Glide重载了多个with的方法,分别用于不同的情境下使用,我们看其中最常用的在Activity中调用的方法,即 首先,跟进getRetriever(activity) 这里首先检查了context是否为空...接下里就来看看在这初始化方法中,Glide都加载了哪些配置。 2....通过以上一系列工具的新建,Glide建立了资源请求线程池,本地缓存加载线程池,动画线程池,内存缓存器,磁盘缓存工具等等,接着构造了Engine数据加载引擎,最后再将Engine注入Glide,构建Glide...Glide的加载流程可以概括为以下流程: model(数据源)-->data(转换数据)-->decode(解码)-->transformed(缩放)-->transcoded(转码)-->encoded

    1K40

    Google推荐的图片加载库Glide:最新版使用指南(含新特性)

    0 概述 Glide是一个Android的图片加载和缓存库,它主要专注于大量图片的流畅加载,Glide几乎可以胜任任何你需要使用到图片从网络拉取,压缩,显示的场景。...因为当你在with方法中传入的Activity或Fragment被销毁的时候,Glide会自动取消加载并且回收所有的加载过程中所使用的资源。...如果是library就实现LibraryGlideModule,以使用OkHttp为例: ?...Glide支持三种不同情况下的占位符: Placeholder 请求图片加载中 Error 请求图片加载错误 Fallback 请求url/model为空 设置占位符 ?...但是其实完全可以在layout文件中设置ImageView为android:scaleType="centerCrop",Glide会自动根据这个属性设置图片的显示方式。

    3.1K30
    领券