聊聊Android的缓存(一)

来源:互联网 发布:五子棋c语言判断胜负 编辑:程序博客网 时间:2024/05/20 15:10

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

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

0 0
原创粉丝点击