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

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情


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


从零构建安卓论坛App:MVVM架构、协程与Room数据库实战 在移动应用开发领域,构建一个功能完整、体验流畅的客户端应用是核心技能。其关键在于采用合理的架构模式实现关注点分离,并高效处理数据流与异步任务。MVVM(Model-View-ViewModel)架构是当前Android官方推荐的主流模式,它通过ViewModel管理UI相关数据,并利用LiveData或StateFlow实现数据驱动UI更新,极大地提升了代码的可测试性与可维护性。在实际工程中,网络请求、本地数据持久化与复杂的UI交互是常见挑战。通过集成RetrofitOkHttp可以构建稳健的网络层,而R 阅读详情

相关推荐

Android Json数据解析+ListView图文混排+缓存算法Lrucache 仿知乎

开发知乎的第一步,首先熟悉看知乎的API以及Json数据解析,才能进行下一步。

Android 缓存sherapreferences工具类分享

【代码】Android 缓存sherapreferences工具类分享。

shi450561200的博客 224

Android使用SharedPreferences进行数据存储,缓存ID等数据

Android使用SharedPreferences进行数据存储,缓存ID等数据

android sharedpreferences缓存,Android SharedPreferences本地缓存

main.xmlxmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" >android:id="@+id/read"android:layout_wid...

weixin_42608299的博客 249

Android使用SharedPreferences缓存数据

1.0存储类 /*   * 缓存数据   * 用之前要实例化   * **/ public class CachePut {     public void putCacheInterG(Context context, String spName, String key, int value) {         putCache(context, spName, key, va

yyxhzdm的博客 723

Android】【框架】【磁盘缓存】【SharedPreferences

整体架构 初始化的时候会加载整个XML到内存中 作为内存缓存 这也是不能跨进程的原因,任何东西只要做缓存那就是2套数据了,即使SP做了多进程措施也无济于事 取:从内存取 commit:直接同步执行 apply:入队 引起ANR的原因 取是不会有ANR的,只需要在最初加载文件的时候读取一次即可,后续都是从内存去取 commit直接在当前线程执行,虽说SP是轻量级的IO,但是至少也是I...

qq_36523667的博客 453

Android学习:利用SharedPreferences存储数据

Android学习:利用SharedPreferences存储数据 SharedPreferencesAndroid系统提供的一种轻量级的数据存储方式,主要用来存储一些简单的数据,如系统登录的用户名密码等,或者存储常用的系统配置信息,如窗口状态等。 SharedPreferences可以保存检索的各种基本数据类型(boolean、float、int、long、string)的持久键值对,是基于XML文件存储的key-value键值对数据,该XML文件存储在手机的data/data/<pack

weixin_52021660的博客 5415

GsonSharedPreferences轻松构建android本地数据缓存

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

wangjia55的专栏 4496

GsonSharedPreferences轻松构建android本地数据缓存 http://blog.csdn.net/gonjay/article/details/1350932...

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

maozhuxigood 123

GsonSharedPreferences构建本地数据缓存

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

网络爬虫 888

探索Prefser:Android SharedPreferences的现代化封装

探索Prefser:Android SharedPreferences的现代化封装 在Android开发的世界中,数据存储是一个不可或缺的环节。SharedPreferences作为Android平台提供的轻量级数据存储解决方案,广泛应用于存储应用程序的配置信息。然而,传统的SharedPreferences API在处理复杂数据类型时显得力不从心。今天,我们将介绍一个强大的开源项目——Prefs...

gitblog_00568的博客 477

Android-Smart-Login用户会话管理:如何优雅处理用户登录状态

Android应用开发中,用户会话管理是提升用户体验的关键环节。Android-Smart-Login作为一个智能登录框架,为用户会话管理提供了完整而优雅的解决方案。本文将深入探讨Android-Smart-Login的用户会话管理机制,帮助开发者掌握如何优雅地处理用户登录状态。 ## 📱 什么是Android-Smart-Login? Android-Smart-Login是一个强大的A

gitblog_00858的博客 945

Android-Smart-Login性能优化:提升登录体验的5个关键技巧

Android-Smart-Login是一款为Android应用快速集成登录功能的开发库,通过简化登录流程提供多种登录方式,帮助开发者轻松实现安全高效的用户认证。本文将分享5个实用的性能优化技巧,帮助你在使用Android-Smart-Login时打造更流畅的登录体验。 ## 1. 优化会话管理:减少重复登录请求 用户登录状态的有效管理是提升体验的基础。Android-Smart-Login

gitblog_00599的博客 480

Claude Code Game Studios 发布就绪检查:深入解析 /release-checklist 内部审计 Skill

`/release-checklist` 是 Claude Code Game Studios(CCGS)框架中负责**内部发布就绪审计**的核心 utility skill:它自动汇总 Sprint 故事完成度、未关闭缺陷严重度、QA 签署状态、构建稳定性与 Changelog 就绪度,并输出 RELEASE READY / RELEASE BLOCKED / CONCERNS 三档裁决,同时在

gitblog_00645的博客 555

Android存储数据的方法:SharedPreference、File I/O、SQLite与ContentProvider分析

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

shw372029857的博客 515

安卓面试题总结

Android 的四大组件分别是:Activity、Service、Broadcast Receiver Content Provider. 1)Activity:这是你与用户进行交互的入口。每一个 Activity 都是一个单独的界面,负责显示 UI响应用户操作。 2)Service:Service 是运行在后台且不直接与用户交互的组件。适用于需要在后台执行长时间运行操作的任务,类似播放音乐或下载文件等。 3)Broadcast Receiver:用于

my_power520的博客 570

Android-Smart-Login进阶:自定义登录系统的实现与优化指南

Android-Smart-Login是一个强大的Android登录框架,它为开发者提供了简单而灵活的方式来实现多种登录方式。这个智能登录框架不仅支持FacebookGoogle登录,更重要的是它提供了完整的自定义登录系统实现方案。无论你是新手开发者还是经验丰富的Android工程师,掌握Android-Smart-Login的自定义登录功能都能让你的应用拥有更强大的用户认证能力。 ## 📱

gitblog_00608的博客 767

如何快速上手Hawk:5分钟完成Android数据存储配置

想要为你的Android应用快速实现安全、简单的数据存储功能吗?Hawk是一个完美的选择!作为一款专为Android设计的安全键值存储库,Hawk让数据持久化变得异常简单。无论你是新手开发者还是经验丰富的工程师,都能在5分钟内完成配置并开始使用。 ## 为什么选择Hawk作为数据存储解决方案? Hawk的设计理念就是**简单易用****安全可靠**。它提供了直观的API接口,让你无需关心复杂

gitblog_01019的博客 499
上一篇: 推荐一些很棒的Bootstrap后台模板
下一篇: iOS中UIWebView的科学使用方法总结
gonjay
博客等级 码龄15年 12粉丝 21原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值