聊聊的Android缓存(三)

Android缓存(二)

  继续书接上文,封装了一层SharedPreferences之后,我们的代码就会简洁很多,面向对象的好处之一就是把一个臃肿的大段代码分解成多段小代码,虽然整体上代码量会有所提升,但是清晰度提升了很多,达到一目了然的效果。
  我们继续详谈第一篇省略掉的代码,完整的get方法如下:

public  synchronized LoginData getLoginData() {{
        if (null == loginData) {
            String data = ServiceConfigManager.getInstance(
                    WhyApplication.getAppContext()).getLoginData();
            if (!TextUtils.isEmpty(data)) {
                loginData= LoginData.getFromJson(data);
            }
        }
        return loginData;
    }
  我来详细解释一下具体的作用
  1. 先判断data是否为空,这里有个细节,就是判断为空的时候null应该放在”==”左边,这是一个很好的习惯,如果data为空的话,在一些情况下,可能会出现空指针异常,但是null在左边,就会避免这种情况。
  2. 接着用ServiceConfigManager获取data的数据,这里的WhyApplication是我自定义的一个Application,前面加上你的项目名称,在使用工具类的时候,有时候为了获取Context,需要引用Application,一般会自定义一个Application,顺便一提Application不比声明成单例的,因为一个应用只有一个Application,它本身就是单例的。
  3. 紧接着使用TextUtils的函数判断数据是否为空,TextUtils是AndroidSDK提供的一个工具类,isEmpty()的实现也很简单,就是判断传入的字符串是否为null或者字符的长度为0:

public static boolean isEmpty(CharSequence str) {
        if (str == null || str.length() == 0)
            return true;
        else
            return false;
    }
   

觉得不过瘾的同学可以自己重新实现一个isEmpty函数,不过感觉这个够用了。
4. 如果data不为空,使用Gson框架的getFromJson函数将data的数据装换成data类型对象,最后返回即可。

  set方法相对简单一些:

  public synchronized void setLoginData (LoginData loginData) {
        if (null==loginData) {
            return;
        }
        String data = LoginData .toJsonString(loginData);
                    ServiceConfigManager.getInstance(WhyApplication.getAppContext()).setLoginData(loginData);
        this.loginData= null;
        this.loginData= getLoginData();
    }
       
  1. 首先还是判断是否为空,如果为空结束函数的执行。
  2. 还是使用Gson,将data对象转换为String类型,方便下一步存储。
  3. 之后使用ServiceConfigManager存储data
  4. 置空loginData
  5. 重新给loginData赋值
  到此,LoginDataHelper的搭建就差不多了,之后讲讲简单的使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值