Glide

2019-05-12  本文已影响0人  我在等你回复可你没回

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

上一篇下一篇

猜你喜欢

热点阅读