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() {
        //清空数据
    }

}

  简单的模板就是这样了,以后需要存储的东西节本上都是这么写,下一篇继续详解。