- 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
- 2024年中山市坦洲镇政府招聘镇中心幼儿园教职工【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山市东凤镇临聘教师人才库入库【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山大学孙逸仙纪念医院深汕中心医院招考聘用(护技药第十批)【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山大学孙逸仙纪念医院深汕中心医院招考聘用(第二十六批)【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山大学孙逸仙纪念医院药学部药剂岗位招考聘用【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山大学附属口腔医院消毒供应中心工勤人员招考聘用2人【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山大学附属第七医院老年医学科卫生专业技术人员招考聘用【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山大学附属第五医院护理人员招考聘用50人【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中天合创煤炭分公司面向社会公开招聘煤炭专业技术人员【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
- 2024年中山交投供应链管理限公司招聘【综合基础知识500题】高频考点模拟试题及参考答案解析.docx
文档评论(0)