picasso基本流程
2017-08-08 17:45:17 0 举报
Picasso——Picasso基本流程
作者其他创作
大纲/内容
ImageViewAction extends Action
step 11
load()
step 2
step 9
step 7
step 16
责任链模式——通过RequestHandler中的canHandleRequest()判断该RequestHandler是否可以处理该请求
step 13
step 14
deliverAction()对之前的ImageViewAction action进行处理
DispatcherHandler
从Picasso中接收的主线程handler发信息HUNTER_BATCH_COMPLETE
内部调用
Picasso
step 5
4.若设置NO_CACHE 不缓存或缓存中无图片,则生成Action,提交入列
返回获得RequestCreator
step 10
接收到信息后调用
RequestCreator
HUNTER_BATCH_COMPLETE
HUNTER_DELAY_NEXT_BATCH
BitmapHunter
接受到信息后调用
run()
接收到信息后diaoyong
step 17
dispatchSubmit(action)Dispatcher内部的DispatcherHandler发送消息REQUEST_SUBMIT
step 8
HUNTER_COMPLETE
step 6
hunt()
step 18
1. 判断是否在主线程中
Dispatcher
forRequest()循环Picasso中的RequestHandler列表找出可以处理请求的Hunter
图片加载第一级缓存
step 4
3.若没有设定 NO_CACHE 不缓存,则从内存获取图片,成功,直接加载setBitmap();失败,占位符占位
batch()处理hunter将BitmapHunter添加到一个批处理列表Dispatcher内部的DispatcherHandler发送消息HUNTER_DELAY_NEXT_BATCH
返回实例化
performComplete()请求完成,从Map中移除hunter
内部调用为该请求生成一个BitmapHunter
with()单例实例化出Picasso
setBitmap()设置图片target.setImageDrawable()
performSubmit()
REQUEST_SUBMIT
step 3
submit(action)将action提交给分发器
PicassoDrawable
into()添加显示的view控件提交下载请求
返回Bitmap对象给run()中的result
complete()
step 1
接受到该信息后调用
step 15
step 12
2.如果设置了fit属性,获取view的宽高设置加载图片的宽高
若设置NO_CACHE 不缓存或缓存中无图内部调用
performBatchComplete()
dispatchComplete()Dispatcher内部的DispatcherHandler发送消息HUNTER_COMPLETE
enqueueAndSubmit(action)参数action为ImageViewAction将action以targetView为键值保存到actionMap中
Handler(Looper.getMainLooper)
0 条评论
下一页
为你推荐
查看更多