持久化存储技术之SharedPreferences存储
SharedPreferences是使用键值对的方式来存储数据的。这样在读取数据的时候就可以通过这个键把对应的值取出来。
优点:SharedPreferences是很轻量级的应用,使用起来也很方便、简洁。
缺点:存储数据类型比较单一(只有基本数据类型以及字符串),无法进行条件查询,只能在不复杂的存储需求下使用,比如保存配置信息等。
存储路径:/data/data/包名/shared_prefs 目录下
一、将数据存储到SharedPreferences中
1.首先需要获取到SharedPreferences对象
Android中提供了三种方法获取该对象(一般用第一种就可以了)
(1)Context类中的getSharedPreferences()
此方法中接收两个参数,第一个参数用于指定SharedPreferences文件名称,如果指定的文件不存在则会创建一个。第二个参数用于指定操作模式,主要有两种模式供选择,MODE_PRIVATE仍然是默认的操作,表示只有当前应用程序才可以对这个SharedPreferences文件进行读写;MODE_MULTI_PROCESS则一般是用于会有多个进程中对同一个SharedPreferences文件进行读写的情况。
(2)Activity类中的getPreferences()方法
(3)PreferenceManager类中的getDefaultSharedPreferences()方法
2.调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
3.向SharedPreferences.Editor对象中添加数据
4.调用commit()方法将添加的数据提交,从而完成数据的存储操作
private void saveDatasBySp() {//获取到SharedPreferences对象 SharedPreferences sp = getSharedPreferences("config",MODE_PRIVATE);//获取到SharedPreferences.Editor对象 SharedPreferences.Editor edit = sp.edit();//向SharedPreferences.Editor对象中添加数据 edit.putString("name","xiaoming");//提交数据 edit.commit(); }
二、从 SharedPreferences中读取数据
1.和保存值的方式一样获取SharedPreferences对象
2.通过get()方法对存储的值进行读取
get()方法中接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值;第二个参数是默认值,即表示当出入的键找不到对应的值时,会以什么样的默认值进行返回。
public String getDatasBySp() {//获取到SharedPreferences对象 SharedPreferences sp = getSharedPreferences("config",MODE_PRIVATE);//通过键找值,默认返回空字符串 String name = sp.getString("name", "");return name; }
三、为了使用方便,我们一般会封装一个工具类
public class PrefUtils {public static final String PREF_NAME = "config";public static void putBoolean(Context ctx, String key, boolean value) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);sp.edit().putBoolean(key, value).commit();}public static boolean getBoolean(Context ctx, String key, boolean defValue) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);return sp.getBoolean(key, defValue);}public static void putString(Context ctx, String key, String value) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);sp.edit().putString(key, value).commit();}public static String getString(Context ctx, String key, String defValue) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);return sp.getString(key, defValue);}public static void putInt(Context ctx, String key, int value) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);sp.edit().putInt(key, value).commit();}public static int getInt(Context ctx, String key, int defValue) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);return sp.getInt(key, defValue);}//删除某个key public static void remove(Context ctx, String key) {SharedPreferences sp = ctx.getSharedPreferences(PREF_NAME,Context.MODE_PRIVATE);sp.edit().remove(key).commit();} }
持久化存储技术之SharedPreferences存储相关推荐
- 网络存储技术:DAS存储、NAS存储和SAN存储
目录 一.直连式存储(DAS) 二.网络直连式存储(NAS) 三.存储网络(SAN) 四.NAS与SAN的区别 网络存储技术(Network Storage Technologies)基于标准网络协议 ...
- 存储技术与智能存储组件
前言 信息在网络中的传输,需要借助数据作为载体,那么信息和数据的关系是什么?数据存储的作用是什么? 一.数据与信息 什么是数据 SNIA(Stirage Networking lndustry Ass ...
- 利用ISCSI存储技术构建IP存储网络(概念篇)
一.iSCSI的概念iSCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的新型存储技术,该技术是将存储行业广泛应用的SCSI接口技术与IP ...
- 持久化存储技术之本地存储
数据持久化是指:将那些内存中(即程序中)的瞬时数据保存到存储设备中. 一.文件存储:把所有数据原封不动地保存到文件中. 使用范围:存储一些简单的文本数据或二进制数据.如果想要存储一些复杂的数据,就需要 ...
- 海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库.Tablestore在阿里云官网上有各种文档介绍,也发布了很多场景案例文章,这些文 ...
- [ Android 五种数据存储方式之一 ] —— SharedPreferences存储数据
SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数. 主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceS ...
- 文件存储技术-OSS云存储服务
控制台 后台代码 获取访问阿里云API的密钥 创建 service_oss 模块 引入阿里云oss相关依赖 <dependencies><!-- 阿里云oss依赖 -->< ...
- 利用ISCSI存储技术构建IP存储网络(安全篇)
在前面的文章中,介绍了如何搭建一个简单的iSCSI网络存储系统,作为iSCSI initiator的客户端主机可以任意连接和使用iSCSI target共享出来的所有磁盘和分区,而在很多时候,通过授权 ...
- 透过新硬件环境下的存储技术,看未来数据库系统崛起(附PPT)
本文根据朱阅岸老师在[Gdevops 2017全球敏捷运维峰会广州站]现场演讲内容整理而成. 在公众号对话框回复"数据库技术",可获取完整PPT 讲师介绍 朱阅岸,中国人民大学博士 ...
最新文章
- c#读取xml文件配置文件Winform及WebForm-Demo具体解释
- python申请内存函数_Python Ctypes c函数的内存分配
- 浏览器输入域名网址访问后的过程详解
- tensorflow一维卷积输入_tensorflow中一维卷积conv1d处理语言序列的一点记录
- python学习-综合练习五(五人分鱼(优化解)、顺向、反向推导)
- (翻译).NET应用架构
- golang 反射_Golang 会淘汰 Python 吗?
- Asp.net mvc自定义route实现国际化
- 学java web需要学php吗_学JAVA WEB要先学什么
- 7 行为型模式之 - 状态模式
- android 波斯文排序,android 阿拉伯,波斯字符串从右到左显示问题
- 通过js引入本地图片地址
- 苹果cms详细安装方法
- 使用numpy计算准确率
- 将图片内嵌到 exe 文件中
- 人体组织平面波超声成像仿真(MATLAB k-Wave仿真)
- (application)javaweb中application的用法
- Qt中 gui 模块和 widgets 模块的区别
- 小米android手机密码忘了怎么解锁,小米手机锁屏密码忘了怎么解锁?
- 囚徒困境困境_所以你现在看到了社会困境