公司动态
Android 两层强弱内存缓存:StrongMemoryCache与WeakMemoryCache
Android 两层强弱内存缓存:StrongMemoryCache与WeakMemoryCache这两个开关并不是“两种互斥缓存策略”,而是共同组成一个两层内存缓存:StrongMemoryCache(有容量上限、LRU、强引用) ↓ 被淘汰/替换/超大条目 WeakMemoryCache(无容量计费、弱引用、机会型命中)默认配置为:strongReferencesEnabled = true weakReferencesEnabled = true源码位置:1. 构建时的实际调用链开发者的配置一般是:val imageLoader = ImageLoader.Builder(context) .memoryCache { MemoryCache.Builder() .maxSizePercent(context, 0.20) .strongReferencesEnabled(true) .weakReferencesEnabled(true) .build() } .build()MemoryCache.Builder.build()的核心逻辑可概括为:val weakMemoryCache = if (weakReferencesEnabled) { RealWeakMemoryCache() } else { EmptyWeakMemoryCache() } val strongMemoryCache = if (strongReferencesEnabled) { RealStrongMemoryCache(maxSizeBytes, weakMemoryCache) } else { EmptyStrongMemoryCache(weakMemoryCache) } return RealMemoryCache(strongMemoryCache, weakMemoryCache)即:强引用开关弱引用开关最终效果truetrue默认双层缓存:强 LRU + 弱引用兜底truefalse只有有严格容量限制的强引用 LRUfalsetrue只有弱引用机会缓存,不保证命中false/