wenju
wenju
  • 发布:2015-07-28 10:33
  • 更新:2015-07-28 15:41
  • 阅读:2071

求图片缓存本地的思路,downloader加载多张图手机发烫

分类:HTML5+

现在的图片缓存我是这么做的:
1.先检查本地是否存在,存在的话直接设置src

  1. 如果本地不存在则plus.downloader下载

问题: 列表中有很多图片,类似微信朋友圈,大概20张,这样downloader一下子就创建了20个线程,导致手机一下子就发烫了.Android手机

downloadder内部线程管理机制是怎么样的呢 有使用线程池吗?能设置运行的线程数吗?比如设置运行的线程总数就3个,其他下载任务等待,如果能这样就解决了手机发烫的问题

现在不知道怎么设置,所以想换个思路,除了downloader把图片下载到本地,还有其他方法吗?Canvas画也比较麻烦,不知道怎么监听src的图片url加载完图了~~(>_<)~~

还没试过用ajax请求图片,下载..

2015-07-28 10:33 负责人:无 分享
已邀请:
蔡繁荣

蔡繁荣 - 发表是最好的记忆

你可以自己内部作管理啊,入队列,慢慢下载

DCloud_App_Array

DCloud_App_Array

Downloader模块内部是有线程池的,但线程池无法避免下载任务导致的手机发烫问题,比如设置了20个下载任务,Downloader还是会下载全部20个任务。
避免这种问题的思路有:

  1. 压缩图片质量减少下载图片的尺寸,减低传输数据量
  2. 减少并发量,用到什么图才触发下载什么图,而不是一上来就下20多
  • wenju (作者)

    亲, 20个下载任务,并不是20个线程,所以像AFinal图片加载框架一样 可以设置真正执行下载任务的线程数,比如只有3个线程执行下载,其余任务的等待..这样就有效解决了发烫的问题

    2015-07-28 16:23

  • wenju (作者)

    Downloader在初始化的时候可以传个参数设置执行任务的线程数就好了 ,我看文档没有发现在哪设置

    2015-07-28 16:24

  • DCloud_App_Array

    目前是内部逻辑处理的,限定并发5个线程下载,当一个任务下载结束后线程结束才会起新的线程下载新任务。

    2015-07-28 16:33

  • wenju (作者)

    回复 DCloud_App_Array:好的 谢谢 因为我这个需求像朋友圈类似,进来的时候,最少展示2条动态吧,每个动态有9个照片,包括用户头像 都20张图了,服务器压缩的图一张50k到100k已经挺小了;除了Downloader还有其他方式缓存图片到本地 然后手机不发烫呢

    2015-07-28 16:43

该问题目前已经被锁定, 无法添加新回复