SharedPreferences()存储

目录

1.将数据存入SharedPreferences中

2.读取SharedPreferences中的数据

3.删除SharedPreferences中的数据


SharedPreferences是Android平台上一个轻量级的存储类,当程序中有一些少量数据需要持久化存储时,可以使用SharedPreferences进行存储。例如存储程序中的用户名、密码、自定义的一些参数等。

1.将数据存入SharedPreferences中

使用SharedPreferences存储者数据时,首先需要调用getSharedPreferences()方法获取SharedPreferencs实例对象。因为该对象本身只能获取数据,不能对数据进行存储和修改 ,所以需要调用ShoredPreferences的edit()方法获取到可编辑的Editor对象,最后通过Editor对象的putXxx()方法存储数据。

java 复制代码
例.
//获取SharedPreferences对象
SharedPreferences sp =getSharedPreferences("data",MODE_PRIVATE);
//获取编辑器对象
SharedPreferences.Editor editor=sp.edit();
//添加数据
editor.putStning("name","张三");
editor.put Int("age",8);

//提交数据(不推荐本方法)
editor.commit(); →淘汰,但仍能使用
//提交数据(推荐本方法)
editor.apply(); →推荐

由上述代码可知,Editor对象是以键值对**(key/value)** 的形式保存数据的,并且根据数据类型的不同会调用不同的方法。操作完数据后,一定要调用commit()方法或apply()方法进行数据提交,否则所有操作不生效。

需要注意的是,SharedPreferences中的Editor编辑器是通过键值对的形式将数据保存在data/data/<packagename>/shared_prefs文件夹的XML文件中,其中value值只能是Float、Int、Long、Boolean、String、Set<String>类型的数据。

commit()方法是同步的,提交成功返回true,提交失败返回false,数量大时可能阻塞主线程;需要提交结果时用commit()方法,可能阻塞线程。不推荐使用,会阻塞线程。
apply()方法是异步的,它会立即返回,而不会阻塞调用线程,apply()方法会将修改的数据放入一个内存中的队列中,然后异步写入磁盘,需要效率不用返回结果时用apply()方法。推荐使用,效率高。

2.读取SharedPreferences中的数据

读取SharedPreferences中的数据只需要获取到SharedPreferences对象,然后通过该对象的getXxx()方法获取到相应Key的值即可。

java 复制代码
例.
Sharedpreferences sp=getSharedPreferences("data",MODE PRIVATE);
String data= sp.getstring("name");

需要注意的是,getXxx()方法的第二个参数为缺省值,如果SP对象中不存在该Key值,将返回缺省值。例如getString("name",""),若name不存在,则key值就返回空字符串。

3.删除SharedPreferences中的数据

如果需要删除SharedPreferences中的数据,则只需要调用Editor对象的remove(String key)方法或者clear()方法即可。

java 复制代码
例
editor.remove("name");
editor.clear();


//提交数据(不推荐本方法)
editor.commit(); →淘汰 
//提交数据(推荐本方法)
editor.apply(); →推荐
相关推荐
码农小河6610 小时前
基于SSM+JSP的高校专业信息管理系统【附源码+数据库】
java·开发语言·数据库
张小姐的猫11 小时前
【MySQL】访问 & 数据流动原理
android·数据库·mysql·adb·1024程序员节
风若飞13 小时前
Spring Ai 入门遇到问题1
java·后端·spring
Nuanyt13 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
朱涛的自习室13 小时前
212 个需求、22 万行代码:Agent 接管开源项目的 19 天
android·前端·人工智能
黑马程序员毕设14 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
SL_staff14 小时前
从文档工具到知识中枢:基于JVS数字底座构建企业级统一内容管理平台的技术实践
java·开源·全栈
SL_staff14 小时前
从‘连得上’到‘管得好’:JVS-IOT双引擎驱动设备运维闭环
java·物联网·产品
w_zero_one16 小时前
递归算法(一)
java·开发语言·算法
SL_staff17 小时前
私有化低代码不是减配版开发:JVS双模式建模如何重建IT交付信任
java·低代码·spring cloud