android LRUCache解析LRU(Least Recently Used)最近最少使用算法原理缓存保存了一个强引用限制值的数量. 每当值被访问的时候,它会被移动到队列的头部. 当缓存已满的时候加入新的值时,队列中最后的值会出队,可能被回收LRUCache内部维护主要是通过LinkedHashMap实现这是一个安全的线程,多线程缓存通过同步实现?使用默认情况下,缓存的大小是由值的数量决定,重...
分类:
移动开发 时间:
2016-05-23 19:12:29
阅读次数:
398
Android性能优化合理管理内存节制的使用Service如果应用程序需要使用Service来执行后台任务的话,只有当任务正在执行的时候才应该让Service运行起来。当启动一个Service时,系统会倾向于将这个Service所依赖的进程进行保留,系统可以在LRUcache当中缓存的进程数量也会减少,导致切换程序的时候耗费更多性能。我们可以使用IntentService,当后台任务执行结束后会自动...
分类:
移动开发 时间:
2016-05-23 15:04:54
阅读次数:
211
一、概述
对于加载图片,大家都不陌生,一般为了尽可能避免OOM都会按照如下做法:
对于图片显示:根据需要显示图片控件的大小对图片进行压缩显示。如果图片数量非常多:则会使用LruCache等缓存机制,将所有图片占据的内容维持在一个范围内。
其实对于图片加载还有种情况,就是单个图片非常巨大,并且还不允许压缩。比如显示:世界地图、清明上河图、微博长图等。
那么对于这种需求,该如何做呢?
首...
分类:
移动开发 时间:
2016-05-18 19:27:05
阅读次数:
291
前几天心血来潮,打算根据看知乎的API自己做一个小知乎,定制的过程遇到ListView的优化问题及图片未缓存重加载等等许多问题,解决了以后打算和博友分享一下。
接口数据:http://api.kanzhihu.com/getpostanswers/20150925/archive
首先,Json数据太常用,相信每一位开发者Json的解析都是必备的。我们要准备以下知识:
JavaBea...
分类:
移动开发 时间:
2016-05-16 00:21:10
阅读次数:
236
安卓中的缓存包括两种情况即内存缓存与磁盘缓存,其中内存缓存主要是使用LruCache这个类,其中内存缓存我在【安卓中的缓存策略系列】安卓缓存策略之内存缓存LruCache中已经进行过详细讲解,如看官还没看过此博客,建议看官先去看一下。
我们知道LruCache可以让我们快速的从内存中获取用户最近使用过的Bitmap,但是我们无法保证最近访问过的Bitmap都能够保存在缓存中,像类似GridVie...
分类:
移动开发 时间:
2016-05-13 15:09:31
阅读次数:
244
我认为在写涉及到数据结构或算法的实现类的源码解析博客时,不应该急于讲它的使用或马上展开对源码的解析,而是要先交待一下这个数据结构或算法的资料,了解它的设计,再从它的设计出发去讲如何实现,最后从实现的角度来讲回源码,才能深入理解。这是最新读了一些博客之后的思考。对此问题如果你有其他见解,欢迎留言交流。
LRU在读LruCache源码之前,我们先来了解一下这里的Lru是什么。LRU全称为Least Re...
分类:
移动开发 时间:
2016-05-13 14:48:34
阅读次数:
236
这是一个来自实际项目的例子,在这个案例中,有同事基于jdk中的LinkedHashMap设计了一个LRUCache,为了提高性能,使用了 ReentrantReadWriteLock 读写锁:写锁对应put()方法,而读锁对应get()方法,期望通过读写锁来实现并发get()。 代码实现如下: [j ...
分类:
其他好文 时间:
2016-05-13 14:37:10
阅读次数:
165
关于Android缓存的一些类的记录,包括ASimpleCache,LruCache和DiskLruCache。给出了项目地址与参考博客。...
分类:
移动开发 时间:
2016-05-13 04:03:00
阅读次数:
182
上一节(自定义初学5——自定义View显示图片)已经说了如何自定义View显示图片。做android时,加载图片是避免不了的,加载网络图片还需要异步加载,最烦人的就是经常出现OOM,为了避免这样的问题,我们一般这样解决:
根据图片控件的大小对图片进行压缩显示。如果图片数量非常多,则会使用LruCache等缓存机制,将所有图片占据的内容维持在一个范围内。
有时加载图片还会...
分类:
其他好文 时间:
2016-05-12 23:40:24
阅读次数:
323
public class ImageCache {private ImageCache() {// use 1/8 of available heap sizecache = new LruCache((int) (Runtime.getRuntime().maxMemory() / 8)) {@Overrideprotected int sizeOf(String key, Bitmap val...
分类:
系统相关 时间:
2016-05-12 20:19:18
阅读次数:
318