用Gson和SharedPreferences轻松构建android本地数据缓存

本文分享了作者在Android项目开发中,通过使用Gson与SharedPreferences来简化本地数据存储与JSON数据处理的经验。介绍了如何将服务端返回的JSON数据转换为对象并进行本地持久化缓存,从而提高开发效率和用户体验。同时推荐了AsyncHttpClient和Gson作为Android开发中强大的工具,强调了它们在本地数据管理和网络请求中的优势。
摘要由CSDN通过智能技术生成


刚刚看了一篇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平台上真的是太强大了,前者自己实现了一套异步网络资源请求,不需要自己开新线程,大家可以到它的官方网站上面看看,介绍的很详细,后者我也不多说了,总之,谁用谁知道,哈哈。


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值