android应用程序中

1. 尽可能的把文件缓存到本地。可以是 memory,cache dir,甚至是放进 SD 卡中(比如大的图片和音视频)。
   可以设置双重缓冲,较大的图片或者音频放到SD卡中,小的图片放到memory中。这样可以节约内存控件,避免频繁的造成内存占用过大而去清理缓存。
2. 控制缓存中各条目的生存周期,有些时候犹如用户头像这一类内容甚至可以做成除非手动刷新否则永不过期。
     缓冲中文件的生命周期可以在缓冲区的逻辑中进行处理,比如每次缓冲区的写入都判断下当前缓存中总文件大小是否达到了最大值,达到的话就清理掉一部分,我们一般是清理掉一半。
3. 使用队列来管理所有的网络访问。当本地 cache miss 的情况下,发起一次访问并排入队列中,以此来避免过多的并发访问。
    缓冲中文件添加时间标志位,或者说用队列的形式,每次读写都要更改这个时间标志位,或者把读到的文件放到队尾,这样,清理缓存时可以按时间标志位,或者队列中前边的文件,以此清理较长时间没有用到的文件。
4. 恰当的设置超时。由于无线网络可靠性较差,因此最好为每一次访问设置合理的超时参数,更进一步来看甚至可以做成自适应的。
    网络访问尽量用asynctask,因为他自己有自己的管理机制,比较方便,对于多线程读取图片,也可以试试用线程池来控制,可以避免过多的并发访问。

Android缓存技术的更多相关文章

  1. Android硬盘缓存技术DiskLruCache技术笔记

    防止多图OOM的核心解决思路就是使用LruCache技术,但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次,这显然非常耗时.因此Googl ...

  2. Android缓存学习入门

    本文主要包括以下内容 利用LruCache实现内存缓存 利用DiskLruCache实现磁盘缓存 LruCache与DiskLruCache结合实例 利用了缓存机制的瀑布流实例 内存缓存的实现 pub ...

  3. 图片_ _图片缓存之内存缓存技术LruCache,软引用

    每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常,这个问题曾经让我觉得很烦恼,后来终于得到了解决,那么现在就让我和大家一起分享一下吧.这篇博文要讲的图片缓存机制,我接触到的有两钟,一 ...

  4. 图片缓存之内存缓存技术LruCache,软引用

    每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常, 这个问题曾经让我觉得很烦恼,后来终于得到了解决, 那么现在就让我和大家一起分享一下吧. 这篇博文要讲的图片缓存机制,我接触到的有两 ...

  5. 转 图片缓存之内存缓存技术LruCache,软引用

    每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常,这个问题曾经让我觉得很烦恼,后来终于得到了解决,那么现在就让我和大家一起分享一下吧.这篇博文要讲的图片缓存机制,我接触到的有两钟,一 ...

  6. 【转】图片缓存之内存缓存技术LruCache、软引用 比较

    每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常,这个问题曾经让我觉得很烦恼,后来终于得到了解决,那么现在就让我和大家一起分享一下吧.这篇博文要讲的图片缓存机制,我接触到的有两钟,一 ...

  7. Android官方技术文档翻译——新构建系统概述

    本文译自Android官方技术文档<New Build System>,原文地址:http://tools.android.com/tech-docs/new-build-system. ...

  8. Android LruCache技术原理

    概述 记得在很早之前,我有写过一篇文章Android高效加载大图.多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技 ...

  9. DiskLruCache硬盘缓存技术详解

    上次讲了使用内存缓存LruCache去加载很多图片而不造成OOM,而这种缓存的特点是在应用程序运行时管理内存中的资源(图片)的存储和释放,如果LruCache中有一张图片被释放了,再次加载该图片时需要 ...

随机推荐

  1. phread_con_wait和pthread_mutex_lock实现的生产者消费者模型

    条件变量是利用线程间共享的全局变量进行同步的一种机制, 主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起: 另一个线程使"条件成立"(给出条件成立信号 ...

  2. Eclipse 代码自动补全

    使用Eclipse开发Android时,发现代码补全功能太差,完全不像VS似的,输入一个字母就出现代码提示. 下面是在Eclipse中实现类似VS代码补全的方法: ①打开Eclipse->Win ...

  3. jquery的几个小例子

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  4. 转:我终于离开了年薪30w的IT行业

    题目乍看起来有点故意惹人眼球的味道,但是对于我事实就是如此,暂且请君听我细细道来!      先自曝家门,我03年毕业,05年来深,06年买车子,06年底结婚,07年买了房子,09年生了儿子,妻子.房 ...

  5. struts2的action访问servlet API的三种方法

    学IT技术,就是要学习... 今天无聊看看struts2,发现struts2的action访问servlet API的三种方法: 1.Struts2提供的ActionContext类 Object g ...

  6. MySQL 没有索引 锁全表

    <h3 class="title" style="box-sizing: inherit; margin: 8px 0px 15px; padding: 0px; ...

  7. 【HDOJ】3085 Nightmare Ⅱ

    双向BFS.注意,任何一个点出队后,首先需要考虑ghost. /* 3085 */ #include <iostream> #include <queue> #include ...

  8. Squares(哈希)

    Time Limit: 3500MS   Memory Limit: 65536K Total Submissions: 14328   Accepted: 5393 Description A sq ...

  9. 【图片处理】ImageMagick, gm

    ImageMagick: Convert, Edit, Or Compose Bitmap Images http://www.imagemagick.org/script/binary-releas ...

  10. 【模拟】【数学】CSU 1803 2016 (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1803 题目大意: 给定n,m(n,m<=109)1<=i<=n,1& ...