内容纲要
• ListView视图缓存优化
• ListView异步加载优化
• ListView图片缓存
• 内存优化
ListView图片缓存
如果每次加载列表时,都需要从网络下载图片,不但会消耗大量
的网络流量,而且会给用户不好的用户体验。为减少用户的
等待时间,可以对图片进行缓存,这里主要有两种缓存方案
:
1、临时缓存,当程序退出时,缓存会被清空。
2、本地持久化缓存,将图片保存在本地。
java] view plaincopyprint?public class AsyncImageLoader
{
private HashMap<String, SoftReference<Drawable>>
imageCache;
public AsyncImageLoader() {
imageCache = new HashMap<String,
SoftReference<Drawable>>();
}
public Drawable loadDrawable(final String imageUrl,
final ImageCallback imageCallback) {
if (imageCache.containsKey(imageUrl)) {
•
SoftReference<Drawable> softReference =
imageCache.get(imageUrl);
Drawable drawable = softReference.get();
if (drawable != null) {
return drawable;
}
}
final Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
imageCallback.imageLoaded((Drawable) message.obj,
imageUrl);
}
SoftReference<Drawable> softReference =
imageCache.get(imageUrl);
Drawable drawable = softReference.get();
if (drawable != null) {
return drawable;
}
}
final Handler handler = new Handler() {
@Override
public void handleMessage(Message message) {
imageCallback.imageLoaded((Drawable) message.obj,
imageUrl);
} new Thread() {
@Override
public void run() {
Drawable drawable = loadImageFromUrl(imageUrl);
imageCache.put(imageUrl, new SoftReference<Drawable>(drawable));
Message message = handler.obtainMessage(0, drawable);
handler.sendMessage(message);
}
}.start();
return null;
}
public static Drawable loadImageFromUrl(String url) {
// ...
}
public interface ImageCallback {
public void imageLoaded(Drawable imageDrawable, String imageUrl);
}
• 注意这里使用了 SoftReference来缓存图片,允许 GC在需要
的时候可以对缓存中的图片进行清理。它这样工作:
· 调用 loadDrawable(ImageUrl, imageCallback),传入一
个匿名实现的 ImageCallback接口
· 如果图片在缓存中不存在的话,图片将从单一的线程中下
载并在下载结束时通过 ImageCallback回调
· 如果图片确实存在于缓存中,就会马上返回,不会回调
ImageCallback
分享到:
相关推荐
listview优化图片缓存例子
listview获取网络图片缓存优化
listview获取网络图片缓存优化.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
安卓Android源码——listview获取网络图片缓存优化.zip
Android应用源码之listview获取网络图片缓存优化_网络
Android高级应用源码-listview获取网络图片缓存优化.zip
listview获取网络图片缓存优化.rar
Android应用源码之listview获取网络图片缓存优化.rar
Android应用源码之listview获取网络图片缓存优化.zip
Android listview获取网络图片缓存优化源码.zip
listview获取网络图片缓存优化.zip项目安卓应用源码下载listview获取网络图片缓存优化.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android应用源码之listview获取网络图片缓存优化.zip项目安卓应用源码下载Android应用源码之listview获取网络图片缓存优化.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司...
listview获取网络图片缓存优化.zip安卓程序源码资源下载listview获取网络图片缓存优化.zip安卓程序源码资源下载 1.学生做毕业设计用 2.程序员学习研究用 3.小公司换皮做新项目用
安卓Andriod源码——listview获取网络图片缓存优化.zip
安卓Android源码——listview获取网络图片缓存优化.rar
安卓开发-listview获取网络图片缓存优化.zip
很多朋友在Android开发listview过程中都会碰到问题 比如从网上下载图片显示在界面 如果图片稍微大一点就会出现oom 或者显示的时候很容易出现图片闪烁等 这个项目能帮你解决
ListView的异步加载图片并缓存,可以实现异步加载数据,异步加载图片,缓存图片,并且实现退出删除图片缓存