android开发中怎样缓存数据

 我来答
可以叫我表哥
2014-12-30 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464989
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
  写入文件上也可以,你在sd卡上创建一个文件,写入其中也是可以的,这样还可以保存好数据。如果写入缓存中也不是不行但是如果忽然关机啥的程序退出,或者有其他程序调用缓存的就可能出错,所以如果不是必须的话不要直接存入缓存中。还有就是如果数据十分小就几个字符串或数字啥的我想你也知道应该放到SharedPreferences中。
uiol884
2014-12-30 · 超过34用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:63.3万
展开全部
小数据:可以自己写 MyApplication extends Application 在MyApplication 中定义几个全局变量用来保存数据

也可以用 SharedPreferences 来保存数据,简单数据直接保存,复杂对象转成json保存
大量结构话的数据使用 SQLite数据库 保存
如果是文件图片数据,只能缓存到sd卡上了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王芦诗涵
2016-03-27 · TA获得超过3898个赞
知道大有可为答主
回答量:9464
采纳率:96%
帮助的人:4504万
展开全部
二级缓存工作机制
  所谓二级缓存实际上并不复杂,当Android端需要获得数据时比如获取网络中的图片,我们首先从内存中查找(按键查找),内存中没有的再从磁盘文件或sqlite中去查找,若磁盘中也没有才通过网络获取;当获得来自网络的数据,就以key-value对的方式先缓存到内存(一级缓存),同时缓存到文件或sqlite中(二级缓存)。注意:内存缓存会造成堆内存泄露,所有一级缓存通常要严格控制缓存的大小,一般控制在系统内存的1/4。
  理解了二级缓存大家可能会有个问题网络中的数据是变化的,数据一旦放入缓存中,再取该数据就是从缓存中获得,这样岂不是不能体现数据的变化?我们在缓存数据时会设置有效时间,比如说30分钟,若超过这个时间数据就失效并释放空间,然后重新请求网络中的数据。有的童鞋就问30分钟内咋办?那好吧,我也没招了,只有下拉刷新了, 实际上这不是问题。
二级缓存的实现
  如何实现二级缓存,有很多技术方案,在这里我们使用 ASimpleCache框架来给大家演示一下,通过名字就可以看出它是很容易实现的。

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

2、ACache使用
  我们先做一个实现数据缓存的案例,然后再归纳一下主要的方法
  编写NewsListActivity主要代码如下:

创建ACache组件
  ACache acache=ACache.get(context)
      或
  ACache acache=ACache.get(context,max_size,max_count)

参数说明:  
  max_size:设置限制缓存大小,默认为50M
  max_count:设置缓存数据的数量,默认不限制
设置缓存数据
  acache.put(key,data,time)或acache.put(key,data)
  将数据同时上存入一级缓存(内存Map)和二级缓存(文件)中
参数说明:  
  Key:为存入缓存的数据设置唯一标识,取数据时就根据key来获得的
  Data:要存入的数据,acache支持的数据类型如图所示:
  有String、可序列化的对象、字节数组、Drawable等  Time:设置缓存数据的有效时间,单位秒

从缓存中取数据
  提供一系列getAsXXX()方法,如图所示。
  根据不同存入数据,调用不同的方法取数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式