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() {
//清空数据
}
}
简单的模板就是这样了,以后需要存储的东西节本上都是这么写,下一篇继续详解。