Glide的缓存机制是怎样的?
三级缓存,强引用,软引用,还有磁盘。
RGB565是什么意思?
16位来代表一个像素。
Glide的磁盘缓存在哪里?
如下图,在/cache/image_manager_disk_cache目录。
image.png
BitmapPool的put方法在哪里执行?
recycle的时候
执行流程描述一下?
内存缓存的类是什么?
LruResourceCache
如何监听生命周期变化?
com.bumptech.glide.manager.ActivityFragmentLifecycle
什么类在监听生命周期呢?
lifecycleListener(具体类是RequestManager)
一开始联网后下载的图片会加到内存缓存LruResourceCache吗?
不会。不信看下图。
image.png
下载图片完成的回调是在哪个类?
惊!!居然请求就是回调!!
public final class SingleRequest<R> implements Request,
SizeReadyCallback,
ResourceCallback,
FactoryPools.Poolable {
下载的任何被封装到了EngineJob。
下载完成后,会回调onEngineJobComplete,然后增加activeResources
@Override
public synchronized void onEngineJobComplete(
EngineJob<?> engineJob, Key key, EngineResource<?> resource) {
// A null resource indicates that the load failed, usually due to an exception.
if (resource != null) {
resource.setResourceListener(key, this);
if (resource.isCacheable()) {
activeResources.activate(key, resource);//加到activeResources
}
}
jobs.removeIfCurrent(key, engineJob);
}
按返回键时发生什么?
activeResources转移到LruResourceCache。
高度变化了key会变化吗?
image.png往下滑动的时候,release是上面的还是下面的?
上面的。从activeResources转移到LruResourceCache
网友评论