尊重他人劳动成果,转载请说明出处:http://blog.csdn.net/bingospunky/article/details/44344085
接触android有半年了,关于图片异步加载,一直只用别人的框架,虽然特别方便,但是始终未见识到图片异步加载的庐山真面目。最近比较悠闲,研究一些高大上的东西。在这篇文章总结一下我对图片异步加载的一些学习心得。
图片加载最重要的无非就是内存和线程。...
分类:
移动开发 时间:
2015-03-17 18:02:20
阅读次数:
239
之前在郭大神的博客看到使用LruCache算法实现图片缓存的.这里仿效他的思路,自己也写了一个. 并加入ConcurrentHashMap>去实现二级缓存,因为ConcurrentHashMap是多个锁的线程安全,支持高并发.很适合这种频繁访问读取内存的操作.
下面整个思路是,使用了系统提供的LruCache类做一级缓存, 大小为运行内存的1/8,当LruCache容量要满的时候,会自动...
分类:
移动开发 时间:
2015-03-11 09:23:59
阅读次数:
261
首先,他采用了强引用(StrongReference)和软引用(SoftReference)来保存下载的图片(bitmap),具体做法是:StrongReference来保存一定容量的图片(bitmap),当超过这个容量的时候就将其移入SoftReference来保存.
bitmap的加载实际上采用了AsyncTask的多线程方式, 所以是很可能出现多个修改并发操作的.所以采用ConcurrentHashMap最合适.ConcurrentHashMap采用了锁分离技术可以很好的解决多操作并发进行,并且也是...
分类:
移动开发 时间:
2015-02-28 18:47:33
阅读次数:
169
使用内存缓存
使用内存缓存可以快速的拿到bitmap,但是是以占用应用可用内存为代价的。LruCache类就是为了实现bitmap的缓存的,它把最近被引用的对象存储在了一个强引用类型的LinkedHashMap中,在缓存大小超过它设定的值的时候就会赶出尽量少的最近使用的对象。
注意:在以前,一个比较受欢迎的内存缓存实现是SoftReference或者WeakReference bitmap缓存...
分类:
其他好文 时间:
2015-02-06 18:53:20
阅读次数:
270
一、前言 JDK1.2以前只提供一种引用类型——强引用Object obj = new Object();。而JDK1.2后我们多另外的三个选择分别是软引用java.lang.ref.SoftReference、弱引用java.lang.ref...
分类:
编程语言 时间:
2015-02-02 19:40:26
阅读次数:
281
1 Java中的SoftReference 2 即对象的软引用。如果一个对象具有软引用,内存空间足够,垃 圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的高 速缓存。使用软引用能防止内存泄露,增强程序的健壮...
分类:
其他好文 时间:
2015-02-02 15:28:37
阅读次数:
124
本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。1.对象的强、软、弱和虚引用 在JDK 1.2曾经的版本号中,若一个对象不被不论什么变量引用,那么程序就无法再使用这个对象。也就是说,仅仅有对象处于可触及(reachable)状态,程序才干使用它。从JDK 1.2版本号開始,把对象的...
分类:
其他好文 时间:
2015-01-17 22:05:09
阅读次数:
235
public class ImageCache {
static private ImageCache cache;// 一个Cache实例
private Hashtable ImageRefs;// 用于Chche内容的存储
private ReferenceQueue q;// 垃圾Reference的队列
// 继承SoftReference,使得每一个实例都具有可识别的标识。
...
分类:
其他好文 时间:
2015-01-11 09:45:36
阅读次数:
131
首先源码如下:package com.demo.app.common;import java.io.File;import java.io.IOException;import java.lang.ref.SoftReference;import java.util.Collections;impo...
分类:
移动开发 时间:
2014-12-18 13:12:17
阅读次数:
257
LRU: least recently used(近期最少使用算法)。LinkedHashMap构造函数可以指定其迭代顺序:LinkedHashMap(intinitialCapacity, floatloadFactor, booleanaccessOrder)设置accessOrder为true...
分类:
其他好文 时间:
2014-12-08 19:20:09
阅读次数:
209