Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4d21969

Browse files
committed
Site updated: 2017-05-08 11:54:37
1 parentf29d354 commit4d21969

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

‎2017/05/08/Glide源码解析(二):缓存机制/index.html‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
<metaproperty="og:description"content="本文是 Glide 源码分析系列的第二篇,主要通过分析源码总结 Glide 的缓存机制。
115115
从加载流程揭开缓存机制的面纱首先回忆一下上一篇关于 Glide 加载流程源码分析的内容,我们从 Glide.with().load().into() 这个最简单最基本的用法入手,一步步深入源码,梳理出了完整的图片加载流程。由于当时分析重点在于整体流程的把握上,所以对于缓存相关的部分都是简单带过而没有进行深入分">
116116
<metaproperty="og:image"content="http://o8swcawjo.bkt.clouddn.com/%E7%BC%93%E5%AD%98%E6%B5%81%E7%A8%8B.png">
117-
<metaproperty="og:updated_time"content="2017-05-08T03:48:22.000Z">
117+
<metaproperty="og:updated_time"content="2017-05-08T03:54:18.000Z">
118118
<metaname="twitter:card"content="summary">
119119
<metaname="twitter:title"content="Glide源码解析(二):缓存机制">
120120
<metaname="twitter:description"content="本文是 Glide 源码分析系列的第二篇,主要通过分析源码总结 Glide 的缓存机制。
@@ -555,7 +555,7 @@ <h3 id="BitmapPool"><a href="#BitmapPool" class="headerlink" title="BitmapPool">
555555
<p>应用运行时图片内存往往占相当大的一部分,如果这部分内存能够尽量的复用,就能够显著地减少内存的频繁申请和释放了。基于这个考虑,Glide 针对 Bitmap 设计了复用方案,这就是 BitmapPool。</p>
556556
<p>Glide 构建了一个 BitmapPool,图片的 Bitmap 的申请和释放都需要通过它来处理。需要加载新的图片时,先从 BitmapPool 中查找有没有相应大小或者稍大一点的 Bitmap,有则直接使用,没有再创建新的 Bimap。一个长列表中的图片往往是大小相同的,所以这个复用率还是相当可观的。</p>
557557
<p>BitmapPool 的最大容量与屏幕分辨率有关,默认是 宽度 Pixels*高度 Piexls*ARGB_8888图片的质量参数*4,这样至少足够缓存四个屏幕大小的图片。容量到达阈值时,使用 LRU 算法从最近最少使用的图片尺寸中移除图片。</p>
558-
<h5id="复用策略"><ahref="#复用策略"class="headerlink"title="复用策略"></a>复用策略</h5><p>BitmapPool 使用策略模式来封装不同的复用策略,策略接口是 LruPoolStrategy,定义了 put()、get()、getSize() 等方法。Glide 中有两种复用策略</p>
558+
<h4id="复用策略"><ahref="#复用策略"class="headerlink"title="复用策略"></a>复用策略</h4><p>BitmapPool 使用策略模式来封装不同的复用策略,策略接口是 LruPoolStrategy,定义了 put()、get()、getSize() 等方法。Glide 中有两种复用策略</p>
559559
<ul>
560560
<li>AttributeStrategy 复用的图片需要图片的尺寸和 Bitmap.Config 完全一致</li>
561561
<li>SizeConfigStrategy 复用要求相对宽松,复用的图片需要 Bitmap.Config 一致,但复用图片的所需内存比原图小即可。确保 Bitmap.Config 一致后,如果有内存大小一致的图片则直接复用,没有则选取内存稍大一点的图片。需要 KITKAT 以上版本</li>
@@ -774,7 +774,7 @@ <h4 id="LRU-算法实现"><a href="#LRU-算法实现" class="headerlink" title="
774774

775775

776776

777-
<divclass="post-toc-content"><olclass="nav"><liclass="nav-item nav-level-3"><aclass="nav-link"href="#从加载流程揭开缓存机制的面纱"><spanclass="nav-number">1.</span><spanclass="nav-text">从加载流程揭开缓存机制的面纱</span></a><olclass="nav-child"><liclass="nav-item nav-level-4"><aclass="nav-link"href="#发起请求前"><spanclass="nav-number">1.1.</span><spanclass="nav-text">发起请求前</span></a></li></ol></li><liclass="nav-item nav-level-3"><aclass="nav-link"href="#内存缓存"><spanclass="nav-number">2.</span><spanclass="nav-text">内存缓存</span></a><olclass="nav-child"><liclass="nav-item nav-level-4"><aclass="nav-link"href="#引用计数"><spanclass="nav-number">2.1.</span><spanclass="nav-text">引用计数</span></a></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#LruResourceCache"><spanclass="nav-number">2.2.</span><spanclass="nav-text">LruResourceCache</span></a></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#ActiveResources"><spanclass="nav-number">2.3.</span><spanclass="nav-text">ActiveResources</span></a></li></ol></li><liclass="nav-item nav-level-3"><aclass="nav-link"href="#磁盘缓存"><spanclass="nav-number">3.</span><spanclass="nav-text">磁盘缓存</span></a><olclass="nav-child"><liclass="nav-item nav-level-4"><aclass="nav-link"href="#DiskLruCacheWrapper"><spanclass="nav-number">3.1.</span><spanclass="nav-text">DiskLruCacheWrapper</span></a><olclass="nav-child"><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存写入"><spanclass="nav-number">3.1.1.</span><spanclass="nav-text">缓存写入</span></a></li><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存读取"><spanclass="nav-number">3.1.2.</span><spanclass="nav-text">缓存读取</span></a></li></ol></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#DiskLruCache"><spanclass="nav-number">3.2.</span><spanclass="nav-text">DiskLruCache</span></a><olclass="nav-child"><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存构建"><spanclass="nav-number">3.2.1.</span><spanclass="nav-text">缓存构建</span></a></li><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存写入-1"><spanclass="nav-number">3.2.2.</span><spanclass="nav-text">缓存写入</span></a></li><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存读取-1"><spanclass="nav-number">3.2.3.</span><spanclass="nav-text">缓存读取</span></a></li></ol></li></ol></li><liclass="nav-item nav-level-3"><aclass="nav-link"href="#BitmapPool"><spanclass="nav-number">4.</span><spanclass="nav-text">BitmapPool</span></a><olclass="nav-child"><liclass="nav-item nav-level-5"><aclass="nav-link"href="#复用策略"><spanclass="nav-number">4.0.1.</span><spanclass="nav-text">复用策略</span></a></li></ol></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#LRU-算法实现"><spanclass="nav-number">4.1.</span><spanclass="nav-text">LRU 算法实现</span></a></li></ol></li></ol></div>
777+
<divclass="post-toc-content"><olclass="nav"><liclass="nav-item nav-level-3"><aclass="nav-link"href="#从加载流程揭开缓存机制的面纱"><spanclass="nav-number">1.</span><spanclass="nav-text">从加载流程揭开缓存机制的面纱</span></a><olclass="nav-child"><liclass="nav-item nav-level-4"><aclass="nav-link"href="#发起请求前"><spanclass="nav-number">1.1.</span><spanclass="nav-text">发起请求前</span></a></li></ol></li><liclass="nav-item nav-level-3"><aclass="nav-link"href="#内存缓存"><spanclass="nav-number">2.</span><spanclass="nav-text">内存缓存</span></a><olclass="nav-child"><liclass="nav-item nav-level-4"><aclass="nav-link"href="#引用计数"><spanclass="nav-number">2.1.</span><spanclass="nav-text">引用计数</span></a></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#LruResourceCache"><spanclass="nav-number">2.2.</span><spanclass="nav-text">LruResourceCache</span></a></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#ActiveResources"><spanclass="nav-number">2.3.</span><spanclass="nav-text">ActiveResources</span></a></li></ol></li><liclass="nav-item nav-level-3"><aclass="nav-link"href="#磁盘缓存"><spanclass="nav-number">3.</span><spanclass="nav-text">磁盘缓存</span></a><olclass="nav-child"><liclass="nav-item nav-level-4"><aclass="nav-link"href="#DiskLruCacheWrapper"><spanclass="nav-number">3.1.</span><spanclass="nav-text">DiskLruCacheWrapper</span></a><olclass="nav-child"><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存写入"><spanclass="nav-number">3.1.1.</span><spanclass="nav-text">缓存写入</span></a></li><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存读取"><spanclass="nav-number">3.1.2.</span><spanclass="nav-text">缓存读取</span></a></li></ol></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#DiskLruCache"><spanclass="nav-number">3.2.</span><spanclass="nav-text">DiskLruCache</span></a><olclass="nav-child"><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存构建"><spanclass="nav-number">3.2.1.</span><spanclass="nav-text">缓存构建</span></a></li><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存写入-1"><spanclass="nav-number">3.2.2.</span><spanclass="nav-text">缓存写入</span></a></li><liclass="nav-item nav-level-5"><aclass="nav-link"href="#缓存读取-1"><spanclass="nav-number">3.2.3.</span><spanclass="nav-text">缓存读取</span></a></li></ol></li></ol></li><liclass="nav-item nav-level-3"><aclass="nav-link"href="#BitmapPool"><spanclass="nav-number">4.</span><spanclass="nav-text">BitmapPool</span></a><olclass="nav-child"><liclass="nav-item nav-level-4"><aclass="nav-link"href="#复用策略"><spanclass="nav-number">4.1.</span><spanclass="nav-text">复用策略</span></a></li><liclass="nav-item nav-level-4"><aclass="nav-link"href="#LRU-算法实现"><spanclass="nav-number">4.2.</span><spanclass="nav-text">LRU 算法实现</span></a></li></ol></li></ol></div>
778778

779779

780780
</div>

‎css/main.css‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1705,7 +1705,7 @@ pre .javascript .function {
17051705
width:4px;
17061706
height:4px;
17071707
border-radius:50%;
1708-
background:#66fff7;
1708+
background:#b86522;
17091709
}
17101710
.links-of-blogroll {
17111711
font-size:13px;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp