- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
bitmap缓存处理图片
在您的UI中显示单个图片是非常简单的,如果您需要一次显示很多图片就有点复杂了。在很多情况下(例如使用 ListView, GridView 或者?ViewPager控件),显示在屏幕上的图片以及即将显示在屏幕上的图片数量是非常大的(例如在图库中浏览大量图片)。
在这些控件中,当一个子控件不显示的时候,系统会重用该控件来循环显示 以便减少对内存的消耗。同时垃圾回收机制还会释放那些已经载入内存中的Bitmap资源(假设您没有强引用这些Bitmap)。一般来说这样都是不错的,但是在用户来回滑动屏幕的时候,为了保证UI的流畅性和载入图片的效率,您需要避免重复的处理这些需要显示的图片。 使用内存缓存和磁盘缓存可以解决这个问题,使用缓存可以让控件快速的加载已经处理过的图片。
本文介绍如何使用缓存来提高UI的载入输入和滑动的流畅性。
使用内存缓存
内存缓存提高了访问图片的速度,但是要占用不少内存。?LruCache类(在API 4之前可以使用Support Library?中的类 )特别适合缓存Bitmap, 把最近使用到的Bitmap对象用强引用保存起来(保存到LinkedHashMap中),当缓存数量达到预定的值的时候,把不经常使用的对象删除。
注意:?过去,实现内存缓存的常用做法是使用SoftReference?或者WeakReference?bitmap 缓存,但是不推荐使用这种方式。从Android 2.3 (API Level 9) 开始,垃圾回收开始强制的回收掉 soft/weak 引用 从而导致这些缓存没有任何效率的提升。另外,在 Android 3.0 (API Level 11)之前,这些缓存的Bitmap数据保存在底层内存(native memory)中,并且达到预定条件后也不会释放这些对象,从而可能导致程序超过内存限制并崩溃。
在使用?LruCache?的时候,需要考虑如下一些因素来选择一个合适的缓存数量参数:
程序中还有多少内存可用
同时在屏幕上显示多少图片?要先缓存多少图片用来显示到即将看到的屏幕上?
设备的屏幕尺寸和屏幕密度是多少?超高的屏幕密度(xhdpi 例如?Galaxy Nexus)设备显示同样的图片要比低屏幕密度(hdpi 例如?Nexus S)设备需要更多的内存。
图片的尺寸和格式决定了每个图片需要占用多少内存
图片访问的频率如何?一些图片的访问频率要比其他图片高很多?如果是这样的话,您可能需要把这些经常访问的图片放到内存中。
在质量和数量上如何平衡?有些情况下保存大量的低质量的图片是非常有用的,当需要的情况下使用后台线程来加入一个高质量版本的图片。
这里没有万能配方可以适合所有的程序,您需要分析您的使用情况并在指定自己的缓存策略。使用太小的缓存并不能起到应有的效果,而使用太大的缓存会消耗更多的内存从而有可能导致 java.lang.OutOfMemory 异常或者留下很少的内存供您的程序其他功能使用。
下面是一个使用?LruCache?缓存的示例:
private?LruCachestring,?bitmap=?mMemoryCache;?
???????????????????????????????????????????????????????????????
@Override?
protected?void?onCreate(Bundle?savedInstanceState)?{?
????...?
????//?Get?memory?class?of?this?device,?exceeding?this?amount?will?throw?an?
????//?OutOfMemory?exception.?
????final?int?memClass?=?((ActivityManager)?context.getSystemService(?
????????????Context.ACTIVITY_SERVICE)).getMemoryClass();?
???????????????????????????????????????????????????????????????
????//?Use?1/8th?of?the?available?memory?for?this?memory?cache.?
????final?int?cacheSize?=?1024?*?1024?*?memClass?/?8;?
???????????????????????????????????????????????????????????????
????mMemoryCache?=?new?LruCachestring,?bitmap=(cacheSize)?
您可能关注的文档
- A Birthday by Christina Rosetti.doc
- A PROMISE OF FLOWERS.ppt
- A Rare Cause of Intestinal Perforation.doc
- A study on automatically extracted keywords in text.ppt
- Academic Writing Assessment 2009.ppt
- ActionBar和Fragment结合ViewPager实现TabActivity.doc
- Adding Organizations and Roles as Primitives to the JADE Framework.ppt
- AFE and Fetal distress.ppt
- Anatomy Unit 4 - Genetics Punnet Squares.ppt
- Android --- Phone (概述).doc
- BK2_Chapters_1_2.ppt
- book3U1 language study 1.ppt
- Brain_anatomy_hemispheres.ppt
- Buzz words(英语热词).ppt
- bx2-3.2第二节 基因的自由组合定律2007.4 选修).ppt
- cacti配置手册.doc
- Causationas Folk Science.ppt
- CED-3.2.ppt
- Cex1p is a novel cytoplasmic component of the Saccharomyces ....doc
- ch07 Transportation in the Supply Chain.ppt
最近下载
- 河南省青桐鸣2024-2025学年高二上学期11月期中化学试卷.docx VIP
- 住院费用清单模板.doc VIP
- 大学学术英语视听说教程下册(第2版)Miriam_Espeseth习题答案.pdf
- 浙江省嘉兴八校联盟2024-2025学年高一上学期期中联考物理试卷(含答案).pdf VIP
- 颈动脉灌注机制.pptx VIP
- 浙江省嘉兴八校联盟2024-2025学年高一上学期期中考试 化学试题(含答案).pdf VIP
- Unit 4 Friends Lesson3 课件 人教精通版英语三年级上册.ppt
- 锅炉原理课件:第七章 锅炉设备的通风计算.ppt VIP
- 生涯发展展示-(第一版).pptx VIP
- 《选品与采购》课件——4.电商采购.pptx VIP
原创力文档


文档评论(0)