Android中SharedPreferences 的基本使用

news2024/9/19 22:11:06

1.SharedPreferences简介 

        SharedPreferences 是 Android 平台为应用开发者提供的一个轻量级的存储辅助类,用来保存应用的一些常用配置,它提供了 putString()、putString(Set<String>)、putInt()、putLong()、putFloat()、putBoolean() 六种数据类型。数据最终是以 XML 形式进行存储,产生的文件保存在/data/data/应用包名/shared_prefs目录下,是日常开发非常常用的一个数据存储类。

        常用于:比如我们要保存一个用户是否第一次进入软件、用户的账号、是否勾选了保存密码等等这一类比较简单的信息。

        注意事项:可以看到图中,所有数据在手机root情况下,进入文件夹,都是一展无遗的,所以如果有重要的数据最好是进行加密后再存储

        其文件内容如图:

 

2.SharedPreferences使用方法

2.1实例化

        SharedPreferences的实例化也有几种不同的方法,比如

  • Context类中的getSharedPreferences()方法
  • Activity类中的getPreferences()方法
  • PreferenceManager 类中的 getDefaultSharedPreferences()方法

        这里我们主要讲最常用的Context类中的getSharedPreferences()方法。

/*
需要传入两个参数:
name:
    也就是你保存到/data/data/应用包名/shared_prefs目录下的文件的名字

mode:操作模式
    MODE_PRIVATE: 保存的数据只能被本应用读、写;
    MODE_WORLD_READABLE: 保存的数据能被其他应用程序读,但不能写;
    MODE_WORLD_WRITEABLE: 保存的数据能被其他应用程序读写;
    MODE_APPEND:检查文件是否存在,存在就往文件加内容,不存在就创建新文件;
*/
SharedPreferences sharedPreferences = getSharedPreferences("filename", MODE_PRIVATE);

2.2Editor

        光有SharedPreferences对象是不能进行数据保存的,需要一个SharedPreferences.Editor对象才能对数据进行插入保存,所以我们还需要实例化一个Editor。

SharedPreferences.Editor editor = sharedPreferences.edit();

2.3存储数据

        有了Editor,我们就能进行存储数据了,可以存储的数据类型也是多达6种:String、int、boolean、float、long还有Set< String > ,所有的数据都是以键值对(key-value)的形式存入到文件中,只需要调用Editor的 .putXxxx() 方法,传入 key 和你需要存储的数据即可。

	    editor.putString("string", "abc");
        editor.putInt("int", 123);
        editor.putFloat("float", 0.001f);
        editor.putBoolean("boolean", true);
        editor.putLong("long", 123123);
        editor.putStringSet("str_set", Set<String>);

 2.4提交保存

        put了数据还只是相当于在半路中,想要真正把数据保存下来,还需要进行一个提交,这里的提交又有两种方法:

  • .apply() 无返回值,简单理解成 异步提交
  • .commit() 有返回值(返回true代表存储成功,否则存储失败),简单理解成 同步提交

        所以一般情况下我们是优先选择 .apply() 方法进行提交保存数据的。

editor.apply();

2.4SharedPreferences获取数据

        保存了数据,那么怎么获取?获取的话相比保存数据而言要稍微简单那么一丢丢,获取是不需要Editor对象的,直接使用SharedPreferences对象调用 .getXxxx() 方法,传入你之前保存数据时传入的 key ,然后再传入一个未获取到数据时应用的 默认值 即可获取数据。

/*defValue默认值
    获取数据时,需要传入 key ,和一个 defValue ,这个默认值,就是当你的key没有找到相应的 key 时,那么就会返回这个 defValue。
*/
sharedPreferences.getString("string","");
sharedPreferences.getInt("string",0);
sharedPreferences.getFloat("string",0);
sharedPreferences.getBoolean("string",false);
sharedPreferences.getLong("string",0);
sharedPreferences.getStringSet("string", Set<String>());

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程池的状态

线程池的状态分为&#xff1a;Running(运行状态)、Shutdown(关闭状态)、Stop(停止状态)、Tidying(整理状态)、Terminated(终止状态)。 Running(运行状态)&#xff1a;线程池被创建时&#xff0c;就是Running状态&#xff0c;线程池中的任务数位0。 该状态会接受新任务&#xf…

CO82-工單號碼段配置

可以通過CO82查看工單號碼段。 配置工單號碼段&#xff1a; 1、首先配置一個號碼段。 2、將工單類型分配給號碼段。 此時工單類型ZP01號碼段即為41W000000-41W999999 3、可以點擊概覽按鈕&#xff0c;查看概覽。 可以看到不同號碼段下的所有工單類型。 *然後在前台就可以對Z…

软件测试知识详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、黑盒测试、白盒测试、灰盒测试 1.1 黑盒测试 黑盒测试又叫功能测试、数据驱动测试 或 基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。…

华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

阻止冒泡事件

每一div都有一个切换事件 div里包括【复制】事件&#xff0c; 点击【复制按钮】&#xff0c;会触发【切换事件】 因为冒泡 在 Vue 3 中&#xff0c;阻止 click 事件冒泡可以使用以下常规方法&#xff1a; 1 事件修饰符&#xff1a;Vue 3 中提供了多种事件修饰符&#xff0c…

Java入门:09.Java中三大特性(封装、继承、多态)02

2 继承 需要两个类才能实现继承的效果。 比如&#xff1a;类A 继承 类B A类 称为 子类 &#xff0c; 衍生类&#xff0c;派生类 B类 称为 父类&#xff0c;基类&#xff0c;超类 继承的作用 子类自动的拥有父类的所有属性和方法 &#xff08;父类编写&#xff0c;子类不需要…

实验2 Linux文件系统常用操作实践

实验2 Linux文件系统常用操作实践 一、实验介绍 本节实验通过实战Linux文件操作模块的基本操作,需要先掌握linux文件系统的原理以及理解linux文件操作的原理,最后通过实操完成linux文件操作的命令,其中包括改变目录、创建目录及文件、删除文件、复制文件、文件移动和改名、查…

BPG的定义和工作原理是什么?

在当今互联网中&#xff0c;网络通信的关键角色之一是BGP&#xff08;边界网关协议&#xff09;。BGP是一种路由矢量协议&#xff0c;负责在自治系统之间交换路由信息&#xff0c;并帮助数据包找到通过网络的理想链路。本文将介绍BGP、BGP4和BGP4&#xff0c;以及它们在网络中的…

记录生产环境,通过域名访问的图片展示不全,通过ip+端口的方式访问图片是完整的

原因&#xff1a;部署nginx的服务器硬盘满了 排查发现nginx日志文件占用了大量硬盘 解决方案&#xff1a; 删除该文件&#xff0c;重启nginx服务&#xff0c;问题解决。

郑重申明《数据资产管理核心技术与应用》一书在拼多多上被盗版售卖,恳请大家支持正版和作者的著作权权益

《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书&#xff0c;作者为张永清等著&#xff0c;近期我本人在拼多多上很多不同的店铺中都买到了这本书的盗版版本&#xff0c;购书的原因是想从市场上购买一批本书送给忠实的读者和身边的朋友&#xff0c;但是发现买到…

pdf图片怎么提取出来?这6个pdf图片提取工具全搞定,值得推荐!

在我们的日常办公和学习中&#xff0c;pdf文件成为了信息传递的重要载体。然而&#xff0c;有时我们在pdf文档中发现一些精彩的图片&#xff0c;想将其提取出来供个人使用或分享给他人。无论是为了更灵活的处理&#xff0c;还是为了发送特定的图像&#xff0c;提取pdf中的图片都…

使用streaming-json-py插件处理JSON数据流:详细指南

目录 一、streaming-json-py简介 二、安装与配置 三、基本使用 示例1:处理不完整的JSON对象 示例2:处理不完整的JSON数组 四、高级用法 实时数据流分析 日志处理 五、性能优化与错误处理 六、总结与展望 在数据驱动的现代社会,实时处理数据流已成为许多应用和服务…

中国大气湿度指数数据集(2003-2020)

该数据集收录了2003-2020年中国大气湿度指数数据集&#xff0c;其中主要包括常用的5个大气湿度指数&#xff1a;真是水汽压&#xff08;AVP&#xff09;、水汽压亏缺&#xff08;VPD&#xff09;、露点温度&#xff08;DPT&#xff09;、混合比&#xff08;MR&#xff09;以及比…

HTML入门笔记

概述 HTML&#xff08;超文本标记语言—HyperText Markup Language&#xff09;是构成 Web 世界的基础&#xff0c;是一种用来告知浏览器如何组织页面的标记语言。 超文本 Hypertext&#xff1a;指连接单个或多个网站间的网页链接&#xff0c;通过这些链接可以访问互联网中的…

【算法题】322.零钱兑换-力扣(LeetCode)

【算法题】322.零钱兑换-力扣(LeetCode) 1.题目 下方是力扣官方题目的地址 322.零钱兑换 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任…

二百六十七、MySQL——海豚调度器创建MySQL库表

一、目的 为了方便部署&#xff0c;直接用海豚创建MySQL库表 二、实施步骤 2.1 准备好SQL文件&#xff0c;并上传海豚中 create database if not exists hurys_dc; use hurys_dc; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; CREATE TABLE tb_holiday ( id int NOT …

城市脉络下的空间句法:中介中心性、接近中心性与绕行率的深度解析

这一篇是对上篇内容的继续深化&#xff0c;也就是sDNA “整体分析”&#xff08;Integral Analysis&#xff09;计算结果代表的意思&#xff0c;有哪些&#xff1f;意义是什么&#xff1f; 上篇文章指路&#xff1a;城市脉络下的空间句法&#xff1a;整合度与选择度的深度解析…

02:【HAL库】OLED模块的简单使用

将江科大的OLED标准库代码移植为HAL库代码 如上图所示&#xff1a;江科大将PB8和PB9配置为通用开漏输出&#xff0c;然后通过程序模拟I2C时序。 1、我们通过CubxMX软件将PB8和PB9也配置为通用开漏输出&#xff0c;其他的代码不变。 2、我们将江科大的OLED.c&#xff0c;OLED.h&…

关于循环Socket创建超Linux文件句柄限制现象分析

项目场景&#xff1a; 在操作系统的世界中万物皆文件。之前拜读过一些作品&#xff1a;针对于socket的创建&#xff0c;Linux也相应创建文件&#xff08;专业术语中也称文件句柄&#xff09;&#xff0c;于是&#xff0c;我想做一些关于极限的操作&#xff0c;看看这些极限操作…

优化数据的抓取规则:减少无效请求

在爬取房价信息的过程中&#xff0c;如何有效过滤无效链接、减少冗余请求&#xff0c;是提升数据抓取效率的关键。本文将介绍如何优化爬虫抓取贝壳等二手房平台中的房价、小区信息&#xff0c;并通过代理IP、多线程、User-Agent和Cookies的设置&#xff0c;确保数据抓取的稳定性…