用Gson和SharedPreferences轻松构建android本地数据缓存_第1张图片

刚刚看了一篇IBM的博客,讲的是Android本地数据存储API,感觉实在是太复杂了,对于大部分个人开发者而言,按照这种方式来做自己的项目,实在是一件极其痛苦的事情,作为一名敏捷开发的信徒,实在难以忍受按照IBM那套来做事情,下面给大家介绍一下个人在实践中总结出来的一套数据存储的方法。

做Android本地数据的存储无非就是

1 使用SharedPreferences存储数据

2 文件存储数据

3 SQLite数据库存储数据

4 使用ContentProvider存储数据

这些方式已经被用烂了,第一个在存储用户设置比较多,第二个用在图片缓存游戏数据混村等,第三个使用数据库功能上来说是最强大的,结合一些ORM类,可以构建很丰富的应用,很多需要和服务端交互的数据都会走SQLite。

按照传统Java的习惯,对于多个对象的数据,使用SQLite是最轻松就能想到的,但使用SQLite还需要自己写一个DBHelper,这对于有多年Java数据库经验的人而言自然是很熟练,但是在实际的Android项目开发中,你需要关注UI、用户体验、产品和逻辑,很难有精力自己去实现这样一套东西,而且就算幸苦做出来,在使用的时候也会遇到各种麻烦的事情,总之在本地使用数据库真的是一件非常吃力不讨好的事情。

当然,如果单纯的使用SharedPreferences,你只能存一些键值对,这对于丰富的UI交互与数据交互的Android平台而言实在太麻烦了,我也一直在为这个问题困扰,开发Android的时候总感觉快不起来。

另外一个困扰我的问题就是对于服务端返回的JSON数据,经常需要解析,总是要实现一套JSON解析的工具,因为不同的项目和不同数据交互,处理的JSON对象往往不同,很是头疼。然而自从接触了谷歌的Gson之后,处理起JSON的效率一下就有了质的飞跃,特么原来还有这么爽的工具,做梦都要笑醒了。

再回过头看看Android客户端的本地数据缓存,再看看JSON数据,我便拿起Gson,将对象变成JSON String存到了SharedPreferences里面,取用的时候把JSON String用Gson实例化为对象,立刻就能在UI层面上setText(user.name)了,还有比这更爽的方式吗?

下面是一些实践中使用过的代码片段:

public class UserUtils {    public static String getUserInfo() {    SharedPreferences pref = getAppContext().getSharedPreferences(                "user_login", 0);            return pref.getString("user_info", "");    }    public static boolean saveUserInfo(String info) {    SharedPreferences pref = getAppContext().getSharedPreferences(                "user_login", 0);    return pref.edit().putString("user_info", info).commit();    }}
在使用的时候,如果服务端返回一个User的JSON数据,那么我们可以这样:
  Gson gson = new Gson();  User user = gson.fromJson(response, User.class);  //对user的变量做一些修改,然后保存  UserUtils.saveUserInfo(gson.toJson(user));  //下次使用的时候就可以不用访问网络资源了  User user = gson.fromJson(UserUtils.getUserInfo(), User.class);

非常简洁的代码,就能实现一个对象数据的本地持久化缓存,而且使用起来异常灵活,非常高的可拓展性。


最后呢,给大家推荐一些非常好用的Android工具:

AsyncHttpClient、Gson

个人感觉,这两个玩意儿凑到一起,在Android平台上真的是太强大了,前者自己实现了一套异步网络资源请求,不需要自己开新线程,大家可以到它的官方网站上面看看,介绍的很详细,后者我也不多说了,总之,谁用谁知道,哈哈。


更多相关文章

  1. 基于Android的校园快递系统_移动端设计_后台管理_MySQL数据库设
  2. 我要做 Android 之 数据持久化
  3. Android数据存储方案ContentProvider存储数据
  4. android中共享全局数据的方法
  5. android的5种数据存储方式

随机推荐

  1. Android(安卓)Studio(一)介绍
  2. android各方面学习的文章
  3. 如何在亿级数据中判断一个元素是否存在?
  4. android ProgressBar 样式讲解
  5. Android(安卓)Java List 排序
  6. Android简易Flash播放器
  7. Android(安卓)LiveData 使用详解
  8. 在Android模拟器中模拟GPS、打电话、发短
  9. XX for Android(安卓)Design 设计文档
  10. android stduio gradle参数配置说明