Android中SharedPreferences 的基本使用

news/2024/9/20 4:39:50 标签: android, java

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()方法。

java">/*
需要传入两个参数:
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。

java">SharedPreferences.Editor editor = sharedPreferences.edit();

2.3存储数据

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

java">	    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() 方法进行提交保存数据的。

java">editor.apply();

2.4SharedPreferences获取数据

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

java">/*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.niftyadmin.cn/n/5666545.html

相关文章

《深度学习》—— 神经网络模型对手写数字的识别

神经网络模型对手写数字的识别 import torch from torch import nn # 导入神经网络模块 from torch.utils.data import DataLoader # 数据包管理工具&#xff0c;打包数据, from torchvision import datasets # 封装了很多与图像相关的模型&#xff0c;数据集 from torchvi…

Redis-01 入门和十大数据类型

Redis支持两种持久化方式&#xff1a;RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上&#xff0c;可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照&#xff0c;可以通过恢复RDB文件来恢复数据。 2.AOF持久化…

WMS仓储系统的真正价值:从混乱到有序,亿发WMS如何重塑仓库管理

在现代供应链管理中&#xff0c;仓库不仅仅是一个简单的存储场所&#xff0c;它是企业高效运营的核心环节之一。为了更好地优化仓储流程、提高工作效率、减少错误率&#xff0c;越来越多的企业引入了WMS&#xff08;仓库管理系统&#xff09;。然而&#xff0c;WMS的真正价值不…

【2024】前端学习笔记8-内外边距-边框-背景

学习笔记 外边距&#xff1a;Margin内边距&#xff1a;Padding边框&#xff1a;Border背景&#xff1a;Background 外边距&#xff1a;Margin 用于控制元素周围的空间&#xff0c;它在元素边框之外创建空白区域&#xff0c;可用于调整元素与相邻元素&#xff08;包括父元素和兄…

C++标准的一些特性记录:C++11的auto和decltype

文章目录 auto容器遍历配合lambda表达式decltype两者对引用类型的处理是相同的decltype保留const,而auto不会保留const在C++11中,引入了两个新的关键字,auto和decltype两个关键字,都是用于做类型推断。但是使用的场景有些区别。 auto 容器遍历 auto这个关键字,我个人在编…

maxwell 输出消息到 kafka

文章目录 1、kafka-producer2、运行一个Docker容器&#xff0c;该容器内运行的是Zendesk的Maxwell工具&#xff0c;一个用于实时捕获MySQL数据库变更并将其发布到Kafka或其他消息系统的应用3、进入kafka容器内部4、tingshu_album 数据库中 新增数据5、tingshu_album 数据库中 更…

高效实现业务流程管理的技术——低代码解决方案

一、低代码平台概述 低代码平台允许用户通过可视化的界面设计和配置应用程序&#xff0c;而无需深入编程知识。这种平台通常包括拖拽式的组件、流程图设计工具、以及预设的功能模块&#xff0c;使得业务用户和开发者都能快速构建和修改应用程序。 二、低代码平台在 BPM 中的优…

LLM - 理解 多模态大语言模型(MLLM) 的 预训练(Pre-training) 与相关技术 (三)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142167709 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 完备(F…