你的位置:首页 > 软件开发 > 操作系统 > Android开发笔记——图片缓存、手势及OOM分析

Android开发笔记——图片缓存、手势及OOM分析

发布时间:2016-01-08 12:00:16
把图片缓存、手势及OOM三个主题放在一起,是因为在Android应用开发过程中,这三个问题经常是联系在一起的。首先,预览大图需要支持手势缩放,旋转,平移等操作;其次,图片在本地需要进行缓存,避免频繁访问网络;最后,图片(Bitmap)是Android中占用内存的大户,涉及高清大图 ...

Android开发笔记——图片缓存、手势及OOM分析

      把图片缓存、手势及OOM三个主题放在一起,是因为在Android应用开发过程中,这三个问题经常是联系在一起的。首先,预览大图需要支持手势缩放,旋转,平移等操作;其次,图片在本地需要进行缓存,避免频繁访问网络;最后,图片(Bitmap)是Android中占用内存的大户,涉及高清大图等处理时,内存占用非常大,稍不谨慎,系统就会报OOM错误。

     庆幸的是,这三个主题在Android开发中属于比较普遍的问题,有很多针对于此的通用的开源解决方案。因此,本文主要说明笔者在开发过程中用到的一些第三方开源库。主要内容如下:

  1. Universal Image Loader、Picasso、Glide与Fresco的对比及使用
  2. PhotoView、GestureImageView的原理及使用
  3. leakcanry内存分析工具

一、Universal Image Loader、Picasso、Glide与Fresco的对比及使用

      Universal Image Loader(UIL)、Picasso、Glide与Fresco是Android中进行图片加载的常用第三方库,主要封装了内存缓存、磁盘缓存、网络请求缓存、线程池等方法,抽象了图片加载的流程,很大程度避免了加载图片引起的内存溢出,提高了图片加载的效率。下图是笔者近期从各个库的github页面查询到的信息:

Android开发笔记——图片缓存、手势及OOM分析

     需要说明的是:

  • Imageloader是最早开源的图片缓存库,目前作者已停止维护(11.27);
  • Picasso的实际作者是Square的Jake Wharton,Android领域的绝对大牛;
  • Glide是由Google员工开源的,在Google I/O 2014官方应用中推荐使用;
  • Fresco的图片加载不使用Java堆内存,而是匿名共享内存(Ashmem)。

附上各个库的github地址:

Universal Image Loader:https://github.com/nostra13/Android-Universal-Image-Loader.git

Picasso:https://github.com/square/picasso.git

Glide:https://github.com/bumptech/glide.git

Fresco:https://github.com/facebook/fresco.git

     这四个图片缓存库的基本使用(HelloWorld)都可以通过一句代码实现,分别如下:

UIL:

ImageLoader.getInstance().displayImage(url, imageView);

原标题:Android开发笔记——图片缓存、手势及OOM分析

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录