每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常,这个问题曾经让我觉得很烦恼,后来终于得到了解决,那么现在就让我和大家一起分享一下吧。这篇博文要讲的图片缓存机制,我接触到的有两钟,一种是软引用,另一种是内存缓存技术。先来看下两者的使用方式,再来作比较。除了加载图片时要用到缓存处理,...
分类:
系统相关 时间:
2015-04-01 19:33:59
阅读次数:
192
LRU主要的耗时操作就是查找,因此,我们可以使用hash_map来代替map,因此时间复杂度可以从O(logN)降低到O(1)#include #include #include #include using namespace std;class LRUCache{public: LRUCa...
分类:
编程语言 时间:
2015-03-30 10:51:49
阅读次数:
149
1 struct Node { 2 int key, value; 3 Node(int k, int v) : key(k), value(v) {} 4 }; 5 6 class LRUCache{ 7 private: 8 int size; 9 list ...
分类:
其他好文 时间:
2015-03-20 09:12:45
阅读次数:
136
尊重他人劳动成果,转载请说明出处: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
package android.util; import java.util.LinkedHashMap; import java.util.Map; /** * A cache that holds strong references to a limited number of ...
分类:
移动开发 时间:
2015-03-09 07:03:26
阅读次数:
177
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.ExecutorServic...
分类:
移动开发 时间:
2015-03-05 17:13:25
阅读次数:
160
Android用LruCache来取代原来强引用和软引用实现内存缓存,因为据说自2.3以后Android将更频繁的调用GC,导致软引用缓存的数据极易被释放。LruCache使用一个LinkedHashMap简单的实现内存的缓存,没有软引用,都是强引用。如果添加的数据大于设置的最大值,就删除最先缓存的...
分类:
系统相关 时间:
2015-03-04 18:45:40
阅读次数:
179
概述记得在很早之前,我有写过一篇文章Android高效加载大图、多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上...
分类:
移动开发 时间:
2015-03-04 18:31:02
阅读次数:
287