Glide:ActiveResources

Posted bdmh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Glide:ActiveResources相关的知识,希望对你有一定的参考价值。

《Glide:Engine》文章中,我们多次看到了ActiveResources这个对象,我们可以理解为活动的资源,今天就来分析一下ActiveResources的代码。

先看看内部属性:

//资源是否允许保持住
  private final boolean isActiveResourceRetentionAllowed;
//这是一个线程,在后台允许,监控清理资源的
//清理弱引用的资源对象
  private final Executor monitorClearedResourcesExecutor;
//保留活动的资源
  @VisibleForTesting final Map<Key, ResourceWeakReference> activeEngineResources = new HashMap<>();
//弱引用的资源队列
  private final ReferenceQueue<EngineResource<?>> resourceReferenceQueue = new ReferenceQueue<>();
//资源监听,当资源释放时触发
  private ResourceListener listener;
//是否当前线程被终止
  private volatile boolean isShutdown;
//移除队列监听
  @Nullable private volatile DequeuedResourceCallback cb;

资源监听是被定义在 EngineResource类中,Engine实现了这个接口。

以上是关于Glide:ActiveResources的主要内容,如果未能解决你的问题,请参考以下文章

Glide:ActiveResources

简单聊聊Glide的内存缓存

Glide:EngineResource

Glide:EngineResource

Glide:EngineResource

Glide 缓存机制及源码