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. php实现base64编码

    工作需要,想弄一个加密的串,就想仿照base64的编码方式,写一个加密的方法,所以就有了下面这个用php实现的base64的代码 <?php /** * Base64 编码/解码 * @auth ...

  2. CVE-2015-1635,MS15-034 漏洞测试

    HTTP.sys远程执行代码漏洞(CVE-2015-1635,MS15-034) 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 H ...

  3. .c 文件取为.o文件

    $(xxx:%.c=%.o) 即可 例子: $(ALLFILES:%.c=%.o)

  4. Babelfish

    Time Limit: 1000MS Memory limit: 65536K 题目描述You have just moved from Waterloo to a big city. The peo ...

  5. 3.Repeater 绑定数据例子

    此例子绑定的数据源为微软在mssql2000中提供的Northwind数据库中的表Categories. 以下为设计步骤: 在C# 中连接数据库.如下图: 在项目中添加新建项,建立一个数据集,并把Ca ...

  6. Gvim一些基本配置

    介绍一些关于Gvim(windows 7 32位 Vim 7.4)的基本配置,除了特别说明,代码一律添加在安装目录下的_vimrc文件中. 1.取消自动备份,这行代码需要添加在 _vimrc文件中的b ...

  7. Linux目录树

    Linux目录树(directory tree) 分层结构(不同于数据库文件系统),单个文件/目录的最大长度为255个字符,完整路径为4096个字符 特殊的文件系统 文件系统 挂载点 说明 Root ...

  8. COJ 2135 Day10-例1

    Day10-例1 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 给定N个物品,价格分别为A1, A2…AN.设计一套面值互不 ...

  9. (转载)php flush()刷新不能输出缓冲的原因分析

    (转载)http://www.webkaka.com/tutorial/php/2012/110628/ 在php程序编写中,flush()的使用率还是挺高的,它在网页表现即时信息效果时发挥了极为重要 ...

  10. Eclipse启动jboss局域网无法访问的问题

    在启动jboss的时候加上参数 -b 0.0.0.0(本地用localhost也能访问,用ip也能访问)