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存储相关推荐

  1. 网络存储技术:DAS存储、NAS存储和SAN存储

    目录 一.直连式存储(DAS) 二.网络直连式存储(NAS) 三.存储网络(SAN) 四.NAS与SAN的区别 网络存储技术(Network Storage Technologies)基于标准网络协议 ...

  2. 存储技术与智能存储组件

    前言 信息在网络中的传输,需要借助数据作为载体,那么信息和数据的关系是什么?数据存储的作用是什么? 一.数据与信息 什么是数据 SNIA(Stirage Networking lndustry Ass ...

  3. 利用ISCSI存储技术构建IP存储网络(概念篇)

    一.iSCSI的概念iSCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的新型存储技术,该技术是将存储行业广泛应用的SCSI接口技术与IP ...

  4. 持久化存储技术之本地存储

    数据持久化是指:将那些内存中(即程序中)的瞬时数据保存到存储设备中. 一.文件存储:把所有数据原封不动地保存到文件中. 使用范围:存储一些简单的文本数据或二进制数据.如果想要存储一些复杂的数据,就需要 ...

  5. 海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解

    前言 表格存储Tablestore是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库.Tablestore在阿里云官网上有各种文档介绍,也发布了很多场景案例文章,这些文 ...

  6. [ Android 五种数据存储方式之一 ] —— SharedPreferences存储数据

    SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数. 主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceS ...

  7. 文件存储技术-OSS云存储服务

    控制台 后台代码 获取访问阿里云API的密钥 创建 service_oss 模块 引入阿里云oss相关依赖 <dependencies><!-- 阿里云oss依赖 -->< ...

  8. 利用ISCSI存储技术构建IP存储网络(安全篇)

    在前面的文章中,介绍了如何搭建一个简单的iSCSI网络存储系统,作为iSCSI initiator的客户端主机可以任意连接和使用iSCSI target共享出来的所有磁盘和分区,而在很多时候,通过授权 ...

  9. 透过新硬件环境下的存储技术,看未来数据库系统崛起(附PPT)

    本文根据朱阅岸老师在[Gdevops 2017全球敏捷运维峰会广州站]现场演讲内容整理而成. 在公众号对话框回复"数据库技术",可获取完整PPT 讲师介绍 朱阅岸,中国人民大学博士 ...

最新文章

  1. c#读取xml文件配置文件Winform及WebForm-Demo具体解释
  2. python申请内存函数_Python Ctypes c函数的内存分配
  3. 浏览器输入域名网址访问后的过程详解
  4. tensorflow一维卷积输入_tensorflow中一维卷积conv1d处理语言序列的一点记录
  5. python学习-综合练习五(五人分鱼(优化解)、顺向、反向推导)
  6. (翻译).NET应用架构
  7. golang 反射_Golang 会淘汰 Python 吗?
  8. Asp.net mvc自定义route实现国际化
  9. 学java web需要学php吗_学JAVA WEB要先学什么
  10. 7 行为型模式之 - 状态模式
  11. android 波斯文排序,android 阿拉伯,波斯字符串从右到左显示问题
  12. 通过js引入本地图片地址
  13. 苹果cms详细安装方法
  14. 使用numpy计算准确率
  15. 将图片内嵌到 exe 文件中
  16. 人体组织平面波超声成像仿真(MATLAB k-Wave仿真)
  17. (application)javaweb中application的用法
  18. Qt中 gui 模块和 widgets 模块的区别
  19. 小米android手机密码忘了怎么解锁,小米手机锁屏密码忘了怎么解锁?
  20. 囚徒困境困境_所以你现在看到了社会困境

热门文章

  1. jquery zTree异步搜索的例子--搜全部节点
  2. L_01 网络字节顺序
  3. 开发LED屏幕页面遇到的问题
  4. 【转载】C++ function、bind和lambda表达式
  5. winform 拖动无边框窗体(调用Windows API)
  6. Word怎么转换成PDF?
  7. BGP多出口多宿主实验
  8. 智慧城市要让市民有获得感
  9. Struts2——(3)ValueStack(值栈)
  10. 校园网双出口配置实例