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

2019-12-10 19:27:12丽君
易采站长站为您分析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://www.easck.com/p>

Picasso:https://www.easck.com/p>

Glide:https://www.easck.com/p>