内容纲要
• 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中,由于屏幕空间有限,只有部分列表项可见。当用户滚动时,一些不再可视的列表项...
本资料包“安卓listview相关相关-listview获取网络图片缓存优化.zip”主要探讨的就是如何在ListView中高效地加载和缓存网络图片。 首先,我们需要理解ListView的工作机制。ListView通过复用convertView(即...
"listview获取网络图片缓存优化" 主要关注如何在ListView中高效地加载和缓存网络图片,以提升用户体验。 首先,我们需要理解ListView的工作原理。ListView通过复用ViewHolder中的视图来提高滚动性能。当一个item...
ListView优化** ListView的优化主要涉及以下几个方面: 1.1 **convertView复用机制**:ListView的Adapter中,`getView()`方法会创建并填充新的视图,但为了提高性能,应充分利用convertView,通过`convertView....
综上所述,"listView快速滑动图片缓存实例"涉及的关键技术包括:Bitmap缓存管理、内存和磁盘缓存策略、图片加载优化以及ListView的滚动监听和Adapter的重用。通过这些手段,可以在保证ListView流畅滑动的同时,提供...
这个"应用源码之listview获取网络图片缓存优化.zip"压缩包很可能包含了关于如何高效处理这个问题的源码示例。 首先,我们来探讨一下图片缓存的两个主要层次:内存缓存和磁盘缓存。内存缓存能够快速响应用户操作,...
这个"Android高级应用源码-listview获取网络图片缓存优化.zip"是一个示例项目,旨在解决这些问题,通过缓存机制优化ListView中加载网络图片的过程。 首先,我们来探讨一下ListView的优化策略。ListView的优化主要...
本资料"Android应用源码之listview获取网络图片缓存优化.zip"主要探讨了如何通过优化代码来解决这些问题,提升用户体验。 首先,我们需要理解ListView的工作原理。ListView通过复用ViewHolder中的视图来提高滚动...
本压缩包"安卓Android源码——listview获取网络图片缓存优化.zip"显然是为了演示如何优化ListView中加载网络图片的过程,通过缓存策略来提高用户体验。其中包含的项目名为"LazyLoaderDemo",暗示了这是一个懒加载的...
本资源"Android应用源码之listview获取网络图片缓存优化.rar"提供了一种优化策略,旨在解决这个问题。 首先,我们要理解ListView的复用机制。ListView通过视图复用来提高性能,当一个列表项离开屏幕后,它的视图会...
"listview获取网络图片缓存优化.zip"这个压缩包文件很可能是关于如何在ListView中高效加载和缓存网络图片的实践教程或者源码示例。下面我们将深入探讨这个主题,分析相关的知识点。 1. **异步加载图片**:由于网络...
2. Android ListView优化策略 - **convertView复用**:ListView的精华在于convertView的重用机制,避免了为每个可见项创建新的视图对象。 - **图片加载库**:使用如Picasso、Glide、 Fresco等第三方库,它们内置了...
"listview获取网络图片缓存优化.rar" 文件很可能是提供了一些关于如何优化ListView加载网络图片的解决方案。下面我们将深入探讨这个问题。 1. **异步加载图片**:默认情况下,如果ListView直接从网络加载图片,那么...
listview获取网络图片缓存优化.zip项目安卓应用源码下载listview获取网络图片缓存优化.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
Android应用源码之listview获取网络图片缓存优化.zip项目安卓应用源码下载Android应用源码之listview获取网络图片缓存优化.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司...
本项目"Android应用源码之listview获取网络图片缓存优化"就是针对这个问题进行的一次实践和优化。 在Android ListView中,由于其滚动特性,当用户滚动时,屏幕上的项会反复绘制。如果不进行优化,每次滚动到新的...
本压缩包"安卓Android源码——listview获取网络图片缓存优化.rar"提供了一个名为"LazyLoaderDemo"的示例,它展示了如何通过懒加载技术来优化ListView中加载网络图片的过程,以提升用户体验。 首先,我们来看一下...