- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android技术积累图片缓存管理.doc
如果每次加载同一张图片都要从网络获取,那代价实在太大了。所以同一张图片只要从网络获取一次就够了,然后在本地缓存起来,之后加载同一张图片时就从缓存中加载就可以了。从内存缓存读取图片是最快的,但是因为内存容量有限,所以最好再加上文件缓存。文件缓存空间也不是无限大的,容量越大读取效率越低,因此可以设置一个限定大小比如10M,或者限定保存时间比如一天。
因此,加载图片的流程应该是:
1、先从内存缓存中获取,取到则返回,取不到则进行下一步;
2、从文件缓存中获取,取到则返回并更新到内存缓存,取不到则进行下一步;
3、从网络下载图片,并更新到内存缓存和文件缓存。
?
接下来看内存缓存类:ImageMemoryCache
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 public class ImageMemoryCache {
????/**
?????* 从内存读取数据速度是最快的,为了更大限度使用内存,这里使用了两层缓存。
?????* 硬引用缓存不会轻易被回收,用来保存常用数据,不常用的转入软引用缓存。
?????*/
????private static final int SOFT_CACHE_SIZE = 15;? //软引用缓存容量
????private static LruCacheString, Bitmap mLruCache;? //硬引用缓存
????private static LinkedHashMapString, SoftReferenceBitmap mSoftCache;? //软引用缓存
???????????????????????????????????????????????????????????????????????????????????????
????public ImageMemoryCache(Context context) {
????????int memClass = ((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
????????int cacheSize = 1024 * 1024 * memClass / 4;? //硬引用缓存容量,为系统可用内存的1/4
????????mLruCache = new LruCacheString, Bitmap(cacheSize) {
????????????@Override
????????????protected int sizeOf(String key, Bitmap value) {
????????????????if (value != null)
????????????????????return value.getRowBytes() * value.getHeight();
????????????????else
????????????????????return 0;
????????????}
???????????????????????????????????????????????????????????????????????????????????????
????????????@Override
????????????protected void entryRemoved(boolean evicted, String key, Bitmap oldValue, Bitmap newValue) {
????????????????if (oldValue != null)
????????????????????// 硬引用缓存容量满的时候,会根据LRU算法把最近没有被使用的图片转入此软引用缓存
????????????????????mSoftCache.put(key, new SoftReferenceBitmap(oldValue));
????????????}
????????};
????????mSoftCache = new LinkedHashMapString, Soft
您可能关注的文档
- ABR反应器在处理PNP合成废水中的应用.doc
- ABS的应用.doc
- akdsmch中_国制造业在经济全球中的地位和作用.doc
- Android应用程序框架实践培训.doc
- ANSYS动力分析.doc
- ansys常见问题解决办法.doc
- ansys接触分析详解.doc
- ANSYS结构非线性分析接触分析.doc
- Aqvhiys毕业实习报告李浩.doc
- AS临床应用.doc
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)