首页 > 其他分享 >android小球(二)——用户数据缓存详解SharedPreferences

android小球(二)——用户数据缓存详解SharedPreferences

时间:2024-03-29 16:31:43浏览次数:17  
标签:缓存 String getSharedPreferences MODE Editor SharedPreferences android editor

SharedPreferences概述


SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置,它提供了String,set,int,long,float,boolean六种数据类型。

使用SharedPreferences进行存储的数据是存放在一个XML文件中的,同时它的存储方式是是以key-value的形式,key对应着将要存储的数据的名称,value对应存储的值。

在第一篇的源码中,首先先声明静态变量
    private static final String PREF_NAME = "MyPrefs";
    private static final String SELECTED_OPTION_KEY = "selectedOption";
    private static final String PREF_MODE = "MyGravity";
    private static final String SELECTED_OPTION_KEY_GRAVITY = "selectedGravity";
    private static final String PREFS_REEKBAR = "reekbar";
    private static final String SEEK_BAR_SIZE_REEKBAR = "seekBarSize";
增加数据 

在小球实例中,用到了两种不同的 SharedPreferences写法

使用Activity类的getSharedPreferences方法获取到 SharedPreferences 对象,并且在其中指定文件名和该文件的访问权限。在使用该方法时,如果该名称的文件不存在就创建爱你它,如果存在就直接打开

其中的第一个参数是文件名,第二个参数是访问权限,我们平常都会将其访问权限设置为private类型,以保护数据不被外界所访问

// 保存SeekBar的当前大小到SharedPreferences
SharedPreferences.Editor editor = getSharedPreferences(PREFS_REEKBAR,MODE_PRIVATE).edit();
editor.putInt(SEEK_BAR_SIZE_REEKBAR, progress);
editor.apply();
// 保存用户选择到SharedPreferences
//获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences(PREF_MODE, Context.MODE_PRIVATE);
 //获取Editor对象的引用
SharedPreferences.Editor editor = sharedPreferences.edit();
 //将获取过来的值放入文件
editor.putString(SELECTED_OPTION_KEY_GRAVITY,selectedGravity);
editor.apply();

 editor类核心方法:

从editor的put方法可以看出SharedPreferences提供了string,set,int,long,float,boolean六种数据类型。(在小球实例中我们只用到了string和int)

 

存储数据的获取 

读取数据可以通过获取SharedPreferences对象,通过SharedPreferences 对象可以获取存储的数据值,第二个参数一般是个默认值,表示当获取数据的时候没有该key则返回一个默认值。

// 恢复用户最近的选择
SharedPreferences sharedPreferences = getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
String lastSelectedOption = sharedPreferences.getString(SELECTED_OPTION_KEY, "No selection made");
// 恢复用户最近的选择
SharedPreferences sharedPreferences1 = getSharedPreferences(PREF_MODE, Context.MODE_PRIVATE);
String lastSelectedOption1 = sharedPreferences1.getString(SELECTED_OPTION_KEY_GRAVITY, "No selection made");

 

 当然有输入输出就会有删除数据(但是在本次小球的例中没有用到)
//获取SharedPreferences对象
 SharedPreferences sharedPreferences = getSharedPreferences(PREF_MODE,MODE_PRIVATE);
 //获取Editor对象的引用
 SharedPreferences.Editor editor = sharedPreferences.edit();
 //将获取过来的值删除文件
 editor.remove(SELECTED_OPTION_KEY_GRAVITY);

 

修改数据

修改数据跟增加数据类似,覆盖原来的数据即修改数据。

SharedPreferences.Editor editor = getSharedPreferences(PREFS_REEKBAR, MODE_PRIVATE).edit();
editor.putInt(SEEK_BAR_SIZE_REEKBAR, progress);
editor.apply();
清除数据

我们可以通过Editor对象的clear方法来完成清楚数据

//获取SharedPreferences对象
 SharedPreferences sharedPreferences = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
 //获取Editor对象的引用
 SharedPreferences.Editor editor = sharedPreferences.edit();
 editor.clear();

清除以后xml文件并不会删除,但里面的数据都没了 

 

 

标签:缓存,String,getSharedPreferences,MODE,Editor,SharedPreferences,android,editor
From: https://blog.csdn.net/LIUCHANGSHUO/article/details/137106614

相关文章

  • android AVC错误修改权限方法
    adblogcat日志报错:init:avc:denied{set}forproperty=camera.gc02m1scontext=u:r:mm-qcamerad:s0tcontext=u:object_r:camera_prop:s0tclass=property_serviceSELinux的权限不足标志性log:avc:denied{操作权限}forpid=7201comm=“进程名”scontext=u......
  • Android杂项知识记录
    Android启动流程:https://blog.csdn.net/xingyu19911016/article/details/120023396https://blog.csdn.net/ldxlz224/article/details/123238353init进程为第一个用户级别的进程,PID为1,它通过一系列的初始工作以及解析init.rc(一个脚本文件)文件构建出Android系统运行的初始......
  • ssm基于Android的XX校园交流APP
    摘要随着互联网时代的发展,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,随着各行业的不断发展,XX校园交流APP建设也逐渐进入了信息化的进程。这个App的设计主要包括前台页面的设计和方便用户互动的后端数据库,而前端软件......
  • 【全开源】JAVA游戏陪玩系统源码陪练APP源码H5源码电竞系统源码支持Android+IOS+H5_博
    “游戏陪玩系统源码、陪练APP源码、H5源码及电竞系统源码”,这些创新技术的融合,为电竞爱好者与游戏玩家带来前所未有的互动体验。通过我们的源码,您可以轻松搭建起一个功能完备的游戏陪玩平台,无论是寻找技术高超的陪练,还是与志同道合的玩家组队竞技,都能在这个平台上得到满足。同......
  • 【全开源】JAVA多商户运营版商城系统源码地摊兄源码多商户源码社交电商源码支持Androi
    "多商户运营版商城系统源码——地摊兄源码多商户源码社交电商源码",是现今电商领域的一大突破。此源码设计独特,功能全面,既满足了多商户运营的需求,又融入了社交电商的理念。通过这套源码,商家可以轻松搭建起一个功能强大的电商平台,实现多商户的集中管理与运营,提升整体运营效率和用......
  • 【全开源】JAVA同城服务美容美发到店服务上门服务系统源码支持Android+IOS+H5_博纳软
    “同城服务美容美发到店服务上门服务系统”,这一创新服务模式正日益受到消费者的青睐。该系统以同城为范围,整合了美容美发行业的优质资源,为消费者提供了便捷、高效的到店与上门服务选择。无论是忙碌的上班族还是行动不便的老年人,只需轻轻一点,即可享受到专业的美容美发服务。同时......
  • [RK3399-Android10] 关于USB触摸屏休眠状态无法唤醒设备的一种情况
    问题描述RK3399Android10平台上,USB触摸屏在系统按键休眠之后,无法触摸唤醒设备。查看内核日志,发现休眠之后,USB设备直接断开,lsusb发现不了设备。休眠之后host接口没有断开电源,使用USB鼠标插在同一个接口上,USB鼠标可以正常唤醒设备。问题描述之前遇到这样的问题一般是修改s......
  • Android 手势相关(一)
    Android手势相关(一)本篇文章主要记录下android手势相关的一些内容.Android提供了一套强大的手势识别框架,可以用来检测和处理用户的手势操作.1:手势识别Android提供了GestureDetector类来识别手势,通过GestureDetector可以检测用户的滑动,长按,双击等手势操作.2:手势......
  • 美团一面:项目中使用过Redis吗?我说用Redis做缓存。他对我哦了一声
    引言Redis,作为一种开源的、基于内存且支持持久化的键值存储系统,以其卓越的性能、丰富灵活的数据结构和高度可扩展性在全球范围内广受欢迎。Redis不仅提供了一种简单直观的方式来存储和检索数据,更因其支持数据结构如字符串、哈希、列表、集合、有序集合等多种类型,使得其在众多场景......
  • Android面试总结(更新中)
    JAVA相关HashMap:继承自AbstractMap,实现Map接口,以键值对形式,可null值null键,线程不安全。默认存储容量为16,负载因子0.75,当存储数量大于12(16*0.75)时自动扩容一倍,扩容为2的幂。数据结构为数组➕链表(JDK1.8后,当链表中数据超过8时转为红黑树)。put时,根据key.hashcode找到对应位......