好多同学做项目时会遇到网络加载数据、图片等情况,还有面试时好多面试者都被提问用过缓存吗?你们是怎么实现缓存的,用的是硬件缓存还是内存缓存等等 balabala....
对于初学者来说听着好高大上,但是在实际项目中的应用呢有没有这么复杂呢?下面我总结了一下好多网友的blog,摘出了我认为对我比较有用的东西和大家分享一下。文章最下面有参考blog地址,尊重原创 :-)
正文开始开始啦
第一点先说内存缓存和硬件缓存的问题
简单的理解就是内存缓存是把数据存到内存当中,需要的时候可以先从内存中获取数据。
硬件缓存指的是把获取到的数据写入到本件中(如:本地数据库SQLite、SharedPreferences、File文件等)
因为内存缓存会把数据缓存到内存中,所以会收到内存的限制,并且不可长时间保留并且不可缓存过大文件如图片、视频等。
(内存的缓存方式分为4种级别由高到低依次为:强引用、软引用、弱引用和虚引用区别详见
具体用法参考http://blog.youkuaiyun.com/kavendb/article/details/5935577
)
硬件缓存应该存储到那比较好呢
我这也不啰嗦了,可以参考一下这位同学的blog
http://blog.youkuaiyun.com/dalancon/article/details/17416041
再说一些实用的
如果想了解内存缓存软引用的可以参考这位同学的blog
http://blog.youkuaiyun.com/gf771115/article/details/30269159
我今天主要还是想介绍一下ASimpleCache这个轻量级缓存框架
系在地址https://github.com/yangfuhai/ASimpleCache
该作者也是国人同时也是afinal作者
下面我再给同学简单介绍一下他的用法(超级简单好用的)
它可以缓存普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 byte数据。
第一步:创建对象
ACache mCache = ACache.get(this);
第二步
调用public void put(String key, String value, int saveTime)方法
三个参数含义分别是
* @param key
* 保存的key
* @param value
* 保存的String数据
* @param saveTime
* 保存的时间,单位:秒
例子:
mCache.put("test", "hello world",10);
含义是我要把字符串hello world 缓存起来 对应的key值是test 缓存时间10s
第三步
调用方法public String getAsString(String key)
参数含义
* @param key 缓存key值
* @return String 数据
例子
String testString = mCache.getAsString("test");
参数是test的key
获取对应的缓存数据是testString // ------------"hello world"
哈哈 是不是很简单呢,具体还可以缓存图片,对象等也只需要三步就可以完成。
有需要的小伙伴下载来来研究下吧。:-)
更具不同需求可选择不同的缓存方式
今天第一篇学习心得就更新到这了。希望在这里认识更多的朋友,还有有什么建议,意见的欢迎再评论里批评指正。:-)
参考blog:
http://blog.youkuaiyun.com/lnb333666/article/details/8460159
http://blog.youkuaiyun.com/kavendb/article/details/5935577