11-14网络图片加载的基础思路流程

一:图片大小的问题
将图片处理压缩
当加载图片的时候
可以先通过BitmapFactory.option取出bitmap的宽高 但不取出bitmap的值 通过设定 BitmapFactory.option的inJustDecodeBounds = true;
来选择是否取得bitmap的值 来控制
然后再通过这个宽高跟 我们所想要的宽高进行对比 我们想要的
然后 这样就属于加载图片的时候压缩 大大减少图片加载所占运行内存 也减少图片所占的储存内存

二:图片加载时的大致流程思想
下载图片时
考虑图片大小 缓存 加载

假设现在进入图片加载环节
所得urlStr

首先应判断 是否可以
1有网络权限 没有就直接通过urlStr在本地找
如果有
2.判断是否存在其缓存文件 如果存在 就直接在其缓存文件中取
如果没有
3.看是否开启硬盘加速
如果有直接查找下载 到缓存文件中 然后直接去缓存文件中查找
3.1 判断是否缓存成功 如果缓存成功直接 在本地中取出
3.2 如果没有直接去网络中下载
如果没有硬盘加速 直接去网络中下载

在加载的过程中 与所有程序运行完后 注意判断 当前的加载文件是否在 缓存文件中存在 如果存在则不添加 如果不存在就添加
讲其放入Lrucache(这个引用的对象是一个 LinkHashMapde) 中很稳的老哥

最后记得将这个图片 通过回回 或者其它方式 显示在视图中。 网络加载都是在子线程中 当中 所以操作完成后 想要主线程中的视图显示出来必然是在 子线程中

三:注意线程问题
控制线程的好办法 就是开线程池
将不进行的线程存在一个 threadQueue中 当线程池中的线程运行完了再取出来执行
这里通过
//给出指定的线程数并发进行 ExecutorService fixedThreadPool = Executors.newFixedThreadPool(int a);()
这个线程池比较好控制 其意思是创建n个同时进行的并发线程
然后 每次运行完了后就从threadQueue中 取出线程来掉用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值