聊聊Android的缓存(一)
2016-04-22 23:49
369 查看
Android缓存(一)
很久之前就想写博客了,但是苦于没时间(bijiaolan),最近终于处理了一些事情,大概,抽出时间跟大家分享一些心得。
当初到公司的第一件事就是看项目代码,看的头晕眼花,然后还是各种看不懂,其实主要是上几位同事写的代码太过于“友好“了,有到只要他们自己能看懂,嗯,就是这样,现在熟悉项目了,又经过了一次重构(其实是重写项目,当初连UI都大改了)基本上算是捋顺了。
先说说工具类,Android的数据存储有几种呢?(一道古老的面试题)
1. SharedPreferences(亲身经历,这个用的很多,接下来用到的就是这种技术)2. 文件(相对较少,一般用于存储固定的图片,例如项目的二维码图片,这个以后讲)
3.Sqlite数据库(表示个人很少用到,和同事讨论过,如果你的数据存储需要建索引,可以用,大部分需求都用不上)
4.Contentprovider(这个用的更少,主要用于不同应用之间开发,额,目前没这个需求)
5.网络存储(这个不用多说了,稍微了解一点web开发的同学都知道吧,大部分数据都存在服务器的数据库里,现在不涉及网络通信的项目很少吧)
每个公司用的缓存工具类都不一定相同,我就分享一下我学到的工具类:LoginDataHelper.java
首先应该将这个类写为单例,声明要存储的Model数据结构(私有的),之后设置getModel(),setModel(),resetModel()方法,这些方法需要同步,嗯,大致就写完了,具体的实现,下一篇文章详细说明。
最后举个例子,比如你要存储的Model叫LoginData,那么对应就应该有三个方法,分别是getLoginData(),setLoginData(),resetLoginData()。代码示例如下:
public class LoginDataHelper { private static LoginDataHelper sInstance = null; private LoginData loginData; //工具类单例 public static LoginDataHelper getInstance() { if (null == sInstance) { synchronized (LoginDataHelper.class) { if (null == sInstance) { sInstance = new LoginDataHelper(); } } } return sInstance; } /** * LoginData缓存 * * @return loginData */ public synchronized LoginData getLoginData() { //获取,这里使用SharedPreferences实现,下一篇文章详细说明 } public synchronized void setLoginData(LoginData loginData) { //存储 } public synchronized void resetCollectResp() { //清空数据 } }
简单的模板就是这样了,以后需要存储的东西节本上都是这么写,下一篇继续详解。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories