Listview异步加载图片,线程处理问题 在一个listview列表中加载图片,我开始是这样做的,一张图片就使用创建一个线程加载,再通过把图片的加载地址做为一个key放到一个map集合中这样来控制同一张图片在没加载完的时候再次创建线程,但是这样子问题就来了。当我快速滑动列表的时候,这样子就会加载一些新的不同地址的图片,但是之前加载的图片线程又还没有加载完,这样子怎么样才可以把没加载完成的线程停止掉。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样做太消耗CPU和内存了,一般加载listView 图片 一个线程就可以了类似这样的。new Thread(){ public void run(){ for (String url: imgURLs) { Bitmap bitmap = downloadImage(url); if (bitmap != null) { _map.put(url,bitmap); //这个做缓存的,下载过的就不用再下载了。 // ui 线程更新图片到ListView Message msg = new Message(); msg.what = 1; msg.obj = bitmap; handler.sendMessage(msg); } } }}.start(); 线程无法立刻停止,JVM回收垃圾的时候有一个过程,如果不断创建线程 这样的APP容易耗电,耗内存。个人认为 一个线程,或者2个线程就够了。除非网络环境很差否则一般还是很快地获取到图片内容的。要想停止线程只能强制调用stop方法,增加标志位。 不过都不能立即停止。 android gps定位...报错了 在代码中怎么可以控制一个xml文件include标签里的内容的显示和消失呢? 如何解析android base文件? android中,关于webview中小问题,在线等 popupwindow+listview高手 环境变量必须配吗?eclipse的版本会影响模拟器吗? Eclipse无法识别手机 请问关于提示 newInstance()没有定义的问题 求大神指教 我在扫描二维码连续扫的时候出现了问题 高薪求萝卜一只 如何 TCP 同步发送数据 ???(或者说是 阻塞block模式 ) ubuntu怎么把openjdk7换回jdk6jre
一般加载listView 图片 一个线程就可以了
类似这样的。
new Thread(){
public void run(){
for (String url: imgURLs) {
Bitmap bitmap = downloadImage(url);
if (bitmap != null) {
_map.put(url,bitmap); //这个做缓存的,下载过的就不用再下载了。
// ui 线程更新图片到ListView
Message msg = new Message();
msg.what = 1;
msg.obj = bitmap;
handler.sendMessage(msg);
}
}
}
}.start();
个人认为 一个线程,或者2个线程就够了。除非网络环境很差否则一般还是很快地获取到图片内容的。
要想停止线程只能强制调用stop方法,增加标志位。 不过都不能立即停止。