由于java的回收机制,使得程序员对内存的引用的回收是不可预测的。而这里就可以做做文章了,讲解SoftReference在一方面的应用(对于有些技术,我感觉只学有用的,不学用不到的。这有别于学os原理,比如os原理你最好精通,这样你的编程内功就会很强,具体的招式则到用到时再学习,或者用不到的就没必要去学)。在android编程中,特别是在listview用来显示来自网络的图片等需要异步加载的资源时,往往需要一个优化的机制。第一是异步加载,这个看我的一篇收藏的博客”Android实现ListView异步加载图片”。第二则是既要考虑到手机的内存问题,又要考虑到网络下载的问题,就是当你下载了一张图片,然后显示在listview的一个view上,然后执行往下拉又往回拉这个动作时,那么我们是否重新去下载该图片呢?好处是节省内存,你每次就存着显示在界面上的那几幅图,但是坏处是每次更新都要重新下载图片。所以我们需要一个缓存的机制,当只有图片的url(即图片的引用)不存在缓存中时才去下载。当然,当内存告急时,需要释放一些没引用的图片,这样,SoftReference就可以很大的用武之地了。即将下载下来的图片放在SoftReference中,然后用map,用Key=img_url来存储该软连接。
分享到:
相关推荐
通过软引用SoftReference缓存图片及实现图片的异步加载
软引用SoftReference1
3.2 如果使用软引用SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程对该Java对象的回收 3.
ava有四种引用类型,strongreference,softreference,weakreference,phantomreference。本篇文档主要的就是进阶的介绍和了解这四种引用类型的异同点,助于你对java的更好的学习理解
1.强引用1.强引用 2.软引用(SoftReference) 3.弱引用(WeakReference) 4.虚引用(PhantomReference) 等等;
本文实例讲述了Android基于SoftReference...SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程对该Java对象的回收。也就是说,一旦SoftReference保存了对一个Java对象的
引用类型是一个对象类型,引用类型的值是指向内存空间的引用,也就是地址,所指向的内存中保存着变量所表示的一个值或者一组值。 Java的4种引用类型: 他们分别是强引用(StrongReference),软引用(SoftReference),...
在android程序开发过程中,可能会有很多人会和我一样,因为内存溢出而感觉到苦恼,因为本身引用是个很多很多(基本就是个看网络美女图片的软件,哈哈),大家都知道android对于每个应用分配的内存是有限制的,不同机型...
很早Java API就添加了弱引用(WeakReference)和软引用(SoftReference),但并不是所有的程序员都熟悉这两个概念
3.1 强引 3.2 软引 3.3 弱引 3. 4 假象引
SoftReference、WeakReference和PhantomRefrence分析和比较
1.强引用本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用 2.软引用(SoftReference)如果一个对象只具有软引用,那就类似于可有可物的生活用
ListView异步加载网络图片,SoftReference,有重复的Url直接返回资源
如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存 1,...
另外,这些引用对象还能保证在Java 抛出OutOfMemory异常之前,被设置为null。他可以用于实现一些常用资源的缓存,实现Cache的功能,保证大限度的使用内存而不引起OutOfMemory异常。 下面是软引用的实现代码: ...
StrongReference,SoftReference, WeakReference的使用实例,请参照博客:http://blog.csdn.net/To_be_Designer/article/details/72673421
listview/gridview加载显示大量图片,对内存和性能都是严峻的考验。常引起OOM,滚动卡顿等问题。该示例代码完美解决了上述问题。主要用到的技术有: 1. 用MemoryCache缓存图片信息,采用SoftReference方式避免OOM。 ...
也就是说,一旦SoftReference保存了对一个Java对象的软引用后,在垃圾线程对这个Java对象回收前,SoftReference类所提供的get()方法返回Java对象的强引用。另外,一旦垃圾线程回收该Java对象之后,get()方法将返回...
本文实例讲述了Android实现ListView异步加载图片的方法。分享给大家供大家参考。具体如下: ListView异步加载图片是非常实用的...import java.lang.ref.SoftReference; import java.net.MalformedURLException; import