网站大量收购独家精品文档,联系QQ:2885784924

Android批量图片加载经典系列——采用二级缓存、异步加载网络图片(烟台杰瑞教育Android培训部原创)Android批量图片加载经典系列——采用二级缓存、异步加载网络图片(烟台杰瑞教育Android培训部原创).docx

Android批量图片加载经典系列——采用二级缓存、异步加载网络图片(烟台杰瑞教育Android培训部原创)Android批量图片加载经典系列——采用二级缓存、异步加载网络图片(烟台杰瑞教育Android培训部原创).docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android批量图片加载经典系列——采用二级缓存、异步加载网络图片一、问题描述  Android应用中经常涉及从网络中加载大量图片,为提升加载速度和效率,减少网络流量都会采用二级缓存和异步加载机制,所谓二级缓存就是通过先从内存中获取、再从文件中获取,最后才会访问网络。内存缓存(一级)本质上是Map集合以key-value对的方式存储图片的url和Bitmap信息,由于内存缓存会造成堆内存泄露, 管理相对复杂一些,可采用第三方组件,对于有经验的可自己编写组件,而文件缓存比较简单通常自己封装一下即可。下面就通过案例看如何实现网络图片加载的优化。二、案例介绍  案例新闻的列表图片?三、主要核心组件  下面先看看实现一级缓存(内存)、二级缓存(磁盘文件)所编写的组件1、MemoryCache  在内存中存储图片(一级缓存), 采用了1个map来缓存图片代码如下:publicclassMemoryCache {// 最大的缓存数 privatestaticfinalint MAX_CACHE_CAPACITY = 30;//用Map软引用的Bitmap对象, 保证内存空间足够情况下不会被垃圾回收privateHashMapString, SoftReferenceBitmap mCacheMap = newLinkedHashMapString, SoftReferenceBitmap() {privatestaticfinallongserialVersionUID = 1L;//当缓存数量超过规定大小(返回true)会清除最早放入缓存的 protectedbooleanremoveEldestEntry(Map.EntryString,SoftReferenceBitmap eldest){return size() MAX_CACHE_CAPACITY;}; };/** * 从缓存里取出图片 * @param id * @return 如果缓存有,并且该图片没被释放,则返回该图片,否则返回null */public Bitmap get(String id){if(!mCacheMap.containsKey(id)) returnnull;SoftReferenceBitmap ref = mCacheMap.get(id);returnref.get(); }/** * 将图片加入缓存 * @param id * @param bitmap */publicvoid put(String id, Bitmap bitmap){mCacheMap.put(id, newSoftReferenceBitmap(bitmap)); }/** * 清除所有缓存 */publicvoid clear() {try {for(Map.EntryString,SoftReferenceBitmapentry :mCacheMap.entrySet()) { SoftReferenceBitmap sr = entry.getValue();if(null != sr) { Bitmap bmp = sr.get();if(null != bmp) bmp.recycle(); } }mCacheMap.clear(); } catch (Exception e) {e.printStackTrace();} }}2、FileCache  在磁盘中缓存图片(二级缓存),代码如下publicclassFileCache { //缓存文件目录 private File mCacheDir;/** * 创建缓存文件目录,如果有SD卡,则使用SD,如果没有则使用系统自带缓存目录 * @param context * @paramcacheDir 图片缓存的一级目录 */publicFileCache(Context context, File cacheDir, String dir){if(android.os.Environment.getExternalStorageState().equals、(android.os.Environment.MEDIA_MOUNTED))mCacheDir = new File(cacheDir, dir);elsemCacheDir = context.getCacheDir();// 如何获取系统内置的缓存存储路径if(!mCacheDir.exists()) mCacheDir.m

您可能关注的文档

文档评论(0)

ptaosqi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档