刚刚看了一篇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学习日记(一)
  2. android box2d小程序
  3. android应用程序签名
  4. mybatisplus的坑 insert标签insert into select无参数问题的解决
  5. 箭头函数的基础使用
  6. python起点网月票榜字体反爬案例
  7. 类和 Json对象
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. android studio搭建JNI开发环境
  2. Android蓝牙一篇看懂
  3. [置顶] Android自定义控件系列九:从源码看
  4. Android 文件缓存方法
  5. Android(安卓)RxJava:2.0 相对于 1.0的更
  6. Android(安卓)Studio运行程序出现Session
  7. Android休闲游戏-快踩我-开发笔记
  8. Android 帧动画何时停止播放
  9. LibGDX输入模块之加速度计
  10. Android算法面试题(1)