`
hunankeda110
  • 浏览: 746483 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多
内容纲要



• 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

0
0
分享到:
评论

相关推荐

    listview优化图片缓存例子

    本示例“listview优化图片缓存例子”将详细介绍如何利用缓存策略来提高ListView加载图片的效率。 一、图片缓存的重要性 在ListView中,由于屏幕空间有限,只有部分列表项可见。当用户滚动时,一些不再可视的列表项...

    安卓listview相关相关-listview获取网络图片缓存优化.zip

    本资料包“安卓listview相关相关-listview获取网络图片缓存优化.zip”主要探讨的就是如何在ListView中高效地加载和缓存网络图片。 首先,我们需要理解ListView的工作机制。ListView通过复用convertView(即...

    listview获取网络图片缓存优化

    "listview获取网络图片缓存优化" 主要关注如何在ListView中高效地加载和缓存网络图片,以提升用户体验。 首先,我们需要理解ListView的工作原理。ListView通过复用ViewHolder中的视图来提高滚动性能。当一个item...

    Android开发之listview优化+图片异步加载缓存+避免图片显示闪烁

    ListView优化** ListView的优化主要涉及以下几个方面: 1.1 **convertView复用机制**:ListView的Adapter中,`getView()`方法会创建并填充新的视图,但为了提高性能,应充分利用convertView,通过`convertView....

    listView快速滑动图片缓存实例

    综上所述,"listView快速滑动图片缓存实例"涉及的关键技术包括:Bitmap缓存管理、内存和磁盘缓存策略、图片加载优化以及ListView的滚动监听和Adapter的重用。通过这些手段,可以在保证ListView流畅滑动的同时,提供...

    应用源码之listview获取网络图片缓存优化.zip

    这个"应用源码之listview获取网络图片缓存优化.zip"压缩包很可能包含了关于如何高效处理这个问题的源码示例。 首先,我们来探讨一下图片缓存的两个主要层次:内存缓存和磁盘缓存。内存缓存能够快速响应用户操作,...

    Android高级应用源码-listview获取网络图片缓存优化.zip

    这个"Android高级应用源码-listview获取网络图片缓存优化.zip"是一个示例项目,旨在解决这些问题,通过缓存机制优化ListView中加载网络图片的过程。 首先,我们来探讨一下ListView的优化策略。ListView的优化主要...

    Android应用源码之listview获取网络图片缓存优化.zip

    本资料"Android应用源码之listview获取网络图片缓存优化.zip"主要探讨了如何通过优化代码来解决这些问题,提升用户体验。 首先,我们需要理解ListView的工作原理。ListView通过复用ViewHolder中的视图来提高滚动...

    安卓Android源码——listview获取网络图片缓存优化.zip

    本压缩包"安卓Android源码——listview获取网络图片缓存优化.zip"显然是为了演示如何优化ListView中加载网络图片的过程,通过缓存策略来提高用户体验。其中包含的项目名为"LazyLoaderDemo",暗示了这是一个懒加载的...

    Android应用源码之listview获取网络图片缓存优化.rar

    本资源"Android应用源码之listview获取网络图片缓存优化.rar"提供了一种优化策略,旨在解决这个问题。 首先,我们要理解ListView的复用机制。ListView通过视图复用来提高性能,当一个列表项离开屏幕后,它的视图会...

    listview获取网络图片缓存优化.zip

    "listview获取网络图片缓存优化.zip"这个压缩包文件很可能是关于如何在ListView中高效加载和缓存网络图片的实践教程或者源码示例。下面我们将深入探讨这个主题,分析相关的知识点。 1. **异步加载图片**:由于网络...

    Android应用源码之listview获取网络图片缓存优化_网络.zip

    2. Android ListView优化策略 - **convertView复用**:ListView的精华在于convertView的重用机制,避免了为每个可见项创建新的视图对象。 - **图片加载库**:使用如Picasso、Glide、 Fresco等第三方库,它们内置了...

    listview获取网络图片缓存优化.rar

    "listview获取网络图片缓存优化.rar" 文件很可能是提供了一些关于如何优化ListView加载网络图片的解决方案。下面我们将深入探讨这个问题。 1. **异步加载图片**:默认情况下,如果ListView直接从网络加载图片,那么...

    listview获取网络图片缓存优化.zip项目安卓应用源码下载

    listview获取网络图片缓存优化.zip项目安卓应用源码下载listview获取网络图片缓存优化.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    Android应用源码之listview获取网络图片缓存优化.zip项目安卓应用源码下载

    Android应用源码之listview获取网络图片缓存优化.zip项目安卓应用源码下载Android应用源码之listview获取网络图片缓存优化.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司...

    Android应用源码之listview获取网络图片缓存优化-IT计算机-毕业设计.zip

    本项目"Android应用源码之listview获取网络图片缓存优化"就是针对这个问题进行的一次实践和优化。 在Android ListView中,由于其滚动特性,当用户滚动时,屏幕上的项会反复绘制。如果不进行优化,每次滚动到新的...

    安卓Android源码——listview获取网络图片缓存优化.rar

    本压缩包"安卓Android源码——listview获取网络图片缓存优化.rar"提供了一个名为"LazyLoaderDemo"的示例,它展示了如何通过懒加载技术来优化ListView中加载网络图片的过程,以提升用户体验。 首先,我们来看一下...

Global site tag (gtag.js) - Google Analytics