Android 图片缓存与加载方式

来源:互联网 发布:永恒之塔捏脸数据 编辑:程序博客网 时间:2024/05/22 02:12

开场白
从开始开发Android到现在使用的好多加载图片的框架,刚开始什么都不懂就看第三方封装的框架是如何加载的,然后照搬过来使用,只要能加载出图片就算工作完成,我才不考虑什么好不好?对不对?因为我自己也不知道什么是好,到后来逐渐在各种遇到的大神的指导下知道,正确的加载方法。但现在我又发现正确的方法里面更优的,给大家做个推荐,希望能够帮助大家。

加载框架介绍
之前项目开发中最常用的图片缓存和加载就是Picasso和Glide,这两种方式用法基本相同。
Picasso

Picasso.with(context).load(url).into(img);

Glide

Glide.whith(this).load(url).into(img);

UniversalImageLoader

ImageLoader imageLoader = ImageLoader.getInstance(); //获取实例imageLoader.init(ImageLoaderConfiguration); //初始化ImageLoaderimageLoader.displayImage(imageUri, imageView); //显示图片imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {    @Override    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {        // Do whatever you want with Bitmap    }});Bitmap bmp = imageLoader.loadImageSync(imageUri);  //异步获取Bitmap

Fresco
传统的缓存的方式是磁盘缓存和内存缓存app经常会出现OOM,OOM这种问题出现解决起来也比较麻烦。后来发现Fecebook推出了Fresco,Fresco采用的是一级缓存(Native缓存),这种方式极大的降低了我们的app出现OOM。

函数库大小分析
Picasso:120KB
Glide:475KB
Android-Universal-Image-Loader:162KB
Fresco:47KB+93KB+93KB+10KB+3MB+62KB+8KB+111KB = 3.4MB

最后,如果APP中严重依赖图片缓存,那就选择Fresco,一般的APP根据自己的需求选择其他的框架就好了,毕竟Fresco3.4MBl 。

原创粉丝点击