android-图片加载 Picasso 设计及优点
2016-07-28 22:24
579 查看
总体设计及流程
上面是 Picasso 的总体设计图。整个库分为 Dispatcher,RequestHandler 及 Downloader,PicassoDrawable 等模块。
Dispatcher 负责分发和处理 Action,包括提交、暂停、继续、取消、网络状态变化、重试等等。
简单的讲就是 Picasso 收到加载及显示图片的任务,创建 Request 并将它交给 Dispatcher,Dispatcher 分发任务到具体 RequestHandler,任务通过 MemoryCache 及 Handler(数据获取接口) 获取图片,图片获取成功后通过 PicassoDrawable 显示到 Target 中。
需要注意的是上面 Data 的 File system 部分,Picasso 没有自定义本地缓存的接口,默认使用 http 的本地缓存,API 9 以上使用 okhttp,以下使用 Urlconnection,所以如果需要自定义本地缓存就需要重定义 Downloader。
Picasso 优点
(1) 自带统计监控功能
支持图片缓存使用的监控,包括缓存命中率、已使用内存大小、节省的流量等。
(2) 支持优先级处理
每次任务调度前会选择优先级高的任务,比如 App 页面中 Banner 的优先级高于 Icon 时就很适用。
(3) 支持延迟到图片尺寸计算完成加载
(4) 支持飞行模式、并发线程数根据网络类型而变
手机切换到飞行模式或网络类型变换时会自动调整线程池最大并发数,比如 wifi 最大并发为 4, 4g 为 3,3g 为 2。
这里 Picasso 根据网络类型来决定最大并发数,而不是 CPU 核数。
(5) “无”本地缓存
无”本地缓存,不是说没有本地缓存,而是 Picasso 自己没有实现,交给了 Square 的另外一个网络库 okhttp 去实现,这样的好处是可以通过请求 Response Header 中的 Cache-Control 及 Expired 控制图片的过期时间。
相关文章推荐
- android adb源码分析(2)
- Android如何判断时间是否在0到8点之间
- Android中过场动画
- Android 四大图片缓存原理,特性对比
- Android中Handler造成内存泄露解决方法
- Json数据格式介绍、使用Android自带类库完成Json生成与解析
- Android的四大组件之-Activity的状态和生命周期
- Android Toast优化,不看别后悔
- Android基本问题汇总
- 设置背景渐变色
- android轮播图的实现
- android连接天天模拟器方法
- android异常收集-关于fragment导入包出错的问题
- Android开发相关的Blog推荐——跟随大神的脚步才能成长为大神
- Android动画效果设置
- android异常收集-java.lang.RuntimeException: Fail to get camera info
- 将当前界面的可视组件保存在png图像文件中
- Android_Spinner_example
- 如何保证Android与服务器的DES加密保持一致
- android异常收集-关于导入文件出现错误,运行不起来