• Android中的缓存机制与实现


     

      Android开发本质上就是手机和互联网中的web服务器之间进行通信,就必然需要从服务端获取数据,而反复通过网络获取数据是比较耗时的,特别是访问比较多的时候,会极大影响了性能,Android中可通过二级缓存来减少频繁的网络操作,减少流量、提升性能。

    方法/步骤

    1.  

      二级缓存工作机制

        所谓二级缓存实际上并不复杂,当Android端需要获得数据时比如获取网络中的图片,我们首先从内存中查找(按键查找),内存中没有的再从磁盘文件或sqlite中去查找,若磁盘中也没有才通过网络获取;当获得来自网络的数据,就以key-value对的方式先缓存到内存(一级缓存),同时缓存到文件或sqlite中(二级缓存)。注意:内存缓存会造成堆内存泄露,所有一级缓存通常要严格控制缓存的大小,一般控制在系统内存的1/4。

        理解了二级缓存大家可能会有个问题网络中的数据是变化的,数据一旦放入缓存中,再取该数据就是从缓存中获得,这样岂不是不能体现数据的变化?我们在缓存数据时会设置有效时间,比如说30分钟,若超过这个时间数据就失效并释放空间,然后重新请求网络中的数据。有的童鞋就问30分钟内咋办?那好吧,我也没招了,只有下拉刷新了, 实际上这不是问题。

    2.  

      二级缓存的实现

        如何实现二级缓存,有很多技术方案,在这里我们使用 ASimpleCache框架来给大家演示一下,通过名字就可以看出它是很容易实现的。

      1、ACache介绍 

        ASimpleCache是一个轻量级的开源cache框架,实际上就是一个叫ACache的java类。已经在商业项目中使用,运行效果不错。

      2、ACache使用

        我们先做一个实现数据缓存的案例,然后再归纳一下主要的方法

        编写NewsListActivity主要代码如下:

      Android中的缓存机制与实现
    3.  

      创建ACache组件

        ACache   acache=ACache.get(context)

            或

        ACache   acache=ACache.get(context,max_size,max_count)

      参数说明:  

        max_size:设置限制缓存大小,默认为50M

        max_count:设置缓存数据的数量,默认不限制 

    4.  

       设置缓存数据 

        acache.put(key,data,time)或acache.put(key,data)

        将数据同时上存入一级缓存(内存Map)和二级缓存(文件)中

      参数说明:  

        Key:为存入缓存的数据设置唯一标识,取数据时就根据key来获得的

        Data:要存入的数据,acache支持的数据类型如图所示:

        有String、可序列化的对象、字节数组、Drawable等  Time:设置缓存数据的有效时间,单位秒

      Android中的缓存机制与实现
    5. 5

      从缓存中取数据

        提供一系列getAsXXX()方法,如图所示。

        根据不同存入数据,调用不同的方法取数据

      Android中的缓存机制与实现
  • 相关阅读:
    【转】QT中添加的资源文件qrc时的路径问题小结
    【转】Qt 资源图片删除后,错误 needed by `debug/qrc_image.cpp'. Stop. 的终极解决办法
    普通类型与自定义类型之间的转化
    快速实现python c扩展模块
    关于解决python线上问题的几种有效技术
    OpenGL超级宝典笔记----渲染管线
    读python源码--对象模型
    python与c互相调用
    OpenGL超级宝典笔记----框架搭建
    python笔记(持续更新)
  • 原文地址:https://www.cnblogs.com/minghualiyan/p/5251187.html
Copyright © 2020-2023  润新知