Glide 图片加载通用优化策略(工程实践版)
目标:围绕加载速度、内存占用、列表流畅度,给出一套在真实项目中可落地的 Glide 使用规范。
说明:ContentResolver.loadThumbnail()接入方案,是其中“数据源缩略图化 + 版本适配”的关键一环。
一、优先使用“缩略图”而不是原图
1. 本地图库(MediaStore)场景
-
Android Q 及以上(API 29+)
- 使用系统 API:
Bitmap ContentResolver.loadThumbnail(Uri uri, Size size, CancellationSignal signal) - 通过自定义 Glide
ModelLoader接入:- 定义
MediaThumbnailUri(uri, width, height)作为 model; - 实现
MediaThumbnailLoader(ModelLoader + DataFetcher + Factory三件套); - 在
AppGlideModule.registerComponents()中:registry.prepend(MediaThumbnailUri.class, Bitmap.class, new MediaThumbnailLoader.Factory(context)); - Q+ 版本:传入
MediaThumbnailUri,内部调用loadThumbnail()直接读系统缩略图缓存。
- 定义
- 收益:不解码原图,单张图片内存从几十 MB 降到几百 KB,加载几乎即时。
- 使用系统 API:
-
Android Q 以下
- 通过文件路径 /
MediaStore.Thumbnails/ 自己计算缩略图; - 上层封一层统一 API:
- Q+:内部走
ContentResolver.loadThumbnail(); - Q-:内部走旧方案(文件路径 + 计算缩略图)。
- Q+:内部走
- 通过文件路径 /
2. 网络图片 / 服务器图片
-
多规格缩略图策略:
- 服务器预先生成多套规格(如
thumbUrl,smallUrl,largeUrl),客户端按场景选择合适
- 服务器预先生成多套规格(如

&spm=1001.2101.3001.5002&articleId=159015978&d=1&t=3&u=b0d57481e4d1436ebf5dfc99cc166e0c)

被折叠的 条评论
为什么被折叠?



