Fresco深入--- Producer && Consumer

Fresco的ImagePipeLine模块是负责图片的下载,缓存,处理的核心模块。在这个模块中,有两个重要的接口类 Producer && Consumer。顾名思义,这里有个是生产--消费的设计模式。不过要注意的是这里的Consumer接口,是用来进行Producer状态的通知,是通往真正的消费者的桥梁。


下面我们分别来看一下:Producer



实现Producer接口的类很多,从名字上看涉及了Bitmap缓存,编码,memory缓存,文件缓存,图像转换,Asset、resource、webp、exif thumbnail、video thumbnail获取,后处理等所有功能的产品"生产“。而Producer的作用就是创建在image 流水线中用于image处理的数据块,每一个实现类都代表了一个独立的任务,把整个的图片载入处理流程分散为一系列的Producer使调用者根据实际需要可以组合出不同的请求。这也是组合模式的核心价值。


Consumer


Consumer实现类的作用是消费Producer生产的数据。Producer通过这个接口类定义的通用接口通知用户请求的数据的状态,成功还是发生了错误。之前说过了,请求是通过一系列的producer组合来的,所以执行请求实际上是通过了一系列的producer的输入产出,也同样的会调用一系列相应的消费实现类。


Consumer定义了下面四个回调接口:

void onNewResult(T newResult, boolean isLast);

newResult里保存着producer生产的产品,isLast用来指示是否是PipeLine上最后的一个环节,是则意味着这是最终的产品了。

void onFailure(Throwable t);
生产失败的回调。

void onCancellation();

在生产的过程中,这次生产被取消时调用。

void onProgressUpdate(float progress);

可以表示生产的进度,progress的范围是0到1.


另外,由于Closeable机制,在真正的消费者使用数据时,要clone再使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值