论坛首页 移动开发技术论坛

又优化了一下 Android ListView 异步加载图片

浏览 88101 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-12-13  
貌似AsyncTask是handler的一种,优化过的handler。而handler说道底也是Thread。
但这三者的具体区别,菜鸟我也不晓得。
现在习惯用线程池管理线程,楼主可以加上试试。官方提倡的。
0 请登录后投票
   发表时间:2011-12-13   最后修改:2011-12-13

之前我也写过实现楼主这种功能的 文章:
http://androidturing.iteye.com/blog/1210672
但那是懂得不多,并没想到在adapter的getView方法进行异步,生生写成了handler更新。
不过思路有所不同,是获得当前屏幕中item的index,加载。并没有wait。不如楼主高明~学习学习
0 请登录后投票
   发表时间:2011-12-13  
libo19881179 写道

之前我也写过实现楼主这种功能的 文章:
http://androidturing.iteye.com/blog/1210672
但那是懂得不多,并没想到在adapter的getView方法进行异步,生生写成了handler更新。
不过思路有所不同,是获得当前屏幕中item的index,加载。并没有wait。不如楼主高明~学习学习


我之前和你的想法类似,不过图片第一次加载要手动加载或者监听datachanged事件来加载图片,有时候横竖屏操作或者弹出键盘时刷新listview就又要手动加载图片才能显示
0 请登录后投票
   发表时间:2011-12-14  
楼主,貌似有点小BUG,就是加载过的图片 会反复加载,比如拖到list下面之后再拖回list上面,那么list上面的图片先显示空白之后又加载了一遍.是否是又读取了一遍已经存储的图片?
0 请登录后投票
   发表时间:2011-12-14  
zlk443271325 写道
楼主,貌似有点小BUG,就是加载过的图片 会反复加载,比如拖到list下面之后再拖回list上面,那么list上面的图片先显示空白之后又加载了一遍.是否是又读取了一遍已经存储的图片?


你提出这个问题,只能说明你还不懂listview的实现原理,listview里面的item view都是重用的,并不是说你有100张图片你就加载了100个item view 这样无疑很浪费内存,listview实例化的item view一般有2到3个屏幕的显示个数,这样起到很大的重用性,这样就必须你在getview方法里面给每个item view重新设置属性和状态,不然这个item view就会保持它上次初始化的状态,这样会造成显示混乱。而imageview的图片作为item view的状态之一也必须在调用getview方法时重新加载(不管是加载内存里的还是sd卡里的或者上网络上的)

所以 反复加载是必须的

不过你提出的这个问题在视觉上也不是不能避免,就是把内存里面是否有图片的判断单独放到线程外面就可以了,当然这样其实也是在反复加载,只是你感官上以为没有
0 请登录后投票
   发表时间:2011-12-15  
zlk443271325 写道
楼主,貌似有点小BUG,就是加载过的图片 会反复加载,比如拖到list下面之后再拖回list上面,那么list上面的图片先显示空白之后又加载了一遍.是否是又读取了一遍已经存储的图片?

Cindy_Lee 说得很正确,这个不是bug,你去看看比如说腾讯视频,优酷的应用都会出现这个情况,但这的确不是bug。
0 请登录后投票
   发表时间:2011-12-15  
最近在搞的大量图片缩略图也遇到了这些问题,虽然我的问题已经解决了,但有时间还是要仔细看下楼主的方案是否最优,以及有一位兄台留下的:http://code.google.com/p/android-imagedownloader/
0 请登录后投票
   发表时间:2011-12-22  
很感谢作者,只是这个对我初学者而言没有一点的注释看起来还辛苦。而且下下来的项目运行起来了,但图片都没显示,不知道为什么。楼主可否指点一下?
0 请登录后投票
   发表时间:2011-12-22  
lnb891219 写道
很感谢作者,只是这个对我初学者而言没有一点的注释看起来还辛苦。而且下下来的项目运行起来了,但图片都没显示,不知道为什么。楼主可否指点一下?

看这个需要有一点android基础,然后图片失效问题是因为下载图片的网站已经关闭了
0 请登录后投票
   发表时间:2011-12-22  
Cindy_Lee 写道
lnb891219 写道
很感谢作者,只是这个对我初学者而言没有一点的注释看起来还辛苦。而且下下来的项目运行起来了,但图片都没显示,不知道为什么。楼主可否指点一下?

看这个需要有一点android基础,然后图片失效问题是因为下载图片的网站已经关闭了


谢谢您,不过我已经解决了这个问题,但是,为什么不能向下滚动....明明有50条记录,一直就只能显示6条。为什么呢
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics