Picasso2.2.0和2.5.2的版本区别

本文主要对比了Picasso库的2.2.0和2.5.2两个版本的区别,包括Picasso类的优化、Handler的改进、Action类的安全性增强、Utils类的内存泄漏处理、LruCache的缓存清理以及BitmapHunter类的图片处理策略变化。2.5.2版引入了线程安全机制、更精细的缓存管理和内存优化,如等比压缩加载图片,提高了性能和内存效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

picasso2.2.0下载   http://download.youkuaiyun.com/detail/dl6655/9393351

picasso2.5.2下载   http://download.youkuaiyun.com/detail/dl6655/9393353

原文件地址  http://blog.youkuaiyun.com/dl6655/article/details/50471176

名词解释

1WeakhashMap SoftReferenceMap  用来存放可回收的对像

2ReferenceQueue  引用插入队列,存放可回收对像的键值  

   http://my.oschina.net/sfshine/blog/219563

3ExcutorService ,poolExcutorService线程池的启动关闭,维护,执行中,等待中,shutdown   

   shutdownNow

4

类的差异

Picasso类  优化了单列的创建,增加了线程安全机制

2.5.2

public static void setSingletonInstance(Picasso picasso) {

        Class var1 = Picasso.class;

        synchronized(Picasso.class) {

            if(singleton != null) {

                throw new IllegalStateException("Singleton instance already exists.");

            } else {

                singleton = picasso;

            }

        }

    }

 

2.2.0

 public static Picasso with(Context context) {

        if(singleton == null) {

            singleton = (new Picasso.Builder(context)).build();

        }

 

        return singleton;

    }

增加了Handler单独处理各个缓存的分发从Sdcard,数据库,Asset,File,netWork处的细分,还有Dispatcher的开始停止功能

Action类  新增了内存安全和网络安全变量的赋值

Utils类  里新增了当内存泄漏的时候刷新内存的方法

   static void flushStackLocalLeaks(final Looper looper) {

        Handler handler = new Handler(looper) {

            public void handleMessage(Message msg) {

                this.sendMessageDelayed(this.obtainMessage(), 1000L);

            }

        };

        handler.sendMessageDelayed(handler.obtainMessage(), 1000L);

}

 

 

 

 

LruCache类  里面增加了清除指定URI的键值的缓存

 public final synchronized void clearKeyUri(String uri) {

        boolean sizeChanged = false;

        int uriLength = uri.length();

        Iterator i = this.map.entrySet().iterator();

 

        while(i.hasNext()) {

            Entry entry = (Entry)i.next();

            String key = (String)entry.getKey();

            Bitmap value = (Bitmap)entry.getValue();

            int newlineIndex = key.indexOf(10);

            if(newlineIndex == uriLength && key.substring(0, newlineIndex).equals

              (uri)) {

                i.remove();

                this.size -= Utils.getBitmapBytes(value);

                sizeChanged = true;

            }

        }

 

        if(sizeChanged) {

            this.trimToSize(this.maxSize);

        }

 

    }

 

BitmapHunter类  (对图片进行处理的类)

              2.5.2使用了等比压缩,加载压缩后的图片,节省了一些内存

              2.2直接全尺寸加载没有进行任何的压缩处理,比较耗内存

 

Dispatcher类  增加了错误日制功能.  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dl6655

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值