Android面试真题-图片加载优化

本文探讨Android面试中关于图片加载框架的选择,尤其是Glide的四层缓存机制,包括活动资源、内存缓存、资源类型和原始数据缓存。此外,还详细讲解了LRU缓存的工作原理及其与LinkedHashMap的关系,分析了LinkedHashMap为何使用双向链表以保证操作效率。面试者展示了如何基于LinkedHashMap实现LRUCache,以及其时间空间复杂度分析。
摘要由CSDN通过智能技术生成

本文提供真实的面试问答,希望对你有所帮助

 

问题1. 用过什么图片加载框架,怎么做技术选型的:

分别有ImageLoader, Picasso, GLide, Fresco,ImageLoader是比较久远的库,Picasso比Glide包体要小,但是加载性能没Glide好(GLide支持三级缓存和生命周期绑定,picasso不支持磁盘缓存,且glide默认采用RGB565,picasso是RGB8888),Fresco加载性能最好,功能最齐全(通过开辟一个共享内存从而做到了不占用堆内存)

总结是应用需要处理较多图片时采用Fresco,一般情况下Glide可以满足需求

 

问题2. 讲下Glide的缓存原理(这里会结合你在项目中用到的框架,这里以Glide举例)

相较于常见的内存+磁盘缓存,Glide将其缓存分成了4层。

  1. 活动资源 (Active Resources):

    当需要加载某张图片能够从内存缓存中获得的时候,在图片加载时主动将对应图片从内存缓存中移除,加入到活动资源中。

    这样也可以避免因为达到内存缓存最大值或者系统内存压力导致的内存缓存清理,从而释放掉活动资源中的图片(recycle)。

    活动资源中是一个”引用计数"的图片资源的弱引用集合。

    因为同一张图片可能在多个地方被同时使用,每一次使用都会将引用计数+1,而当引用计数为0时候,则表示这个图片没有被使用也就是没有强引用了。这样

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值