首页 > 其他分享 >Android开发 - 存储辅助类 SharedPreferences 解析

Android开发 - 存储辅助类 SharedPreferences 解析

时间:2024-07-26 16:30:23浏览次数:8  
标签:SharedPreferences name editor sharedPreferences Android 解析 数据 Editor

SharedPreferences简介

  • SharedPreferencesAndroid平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置SharedPreferences的数据以键值对(key, val)的进行保存在以xml形式的文件中。在应用中通常做一些简单数据的持久化缓存

  • editorput方法可以看出SharedPreferences提供了Stringsetintlongfloatboolean六种数据类型editor类核心方法

  • getSharedPreferences(String name, int mode)

    • 参数解析
      • name:存储文件名字
      • mode存储方式;取值如下:
        • Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写
        • Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写
        • Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序写,但不能读
        • Context.MODE_APPEND:该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件

SharedPreferences使用

增加数据

  • 代码实例

    //通过对应存储文件名得到要操作的SharedPreferences对象
    SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
    //获取Editor对象的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    //将值以键值对(key, val)格式放入文件
    editor.putString("name", "lucas");
    editor.putInt("age", 30);
    editor.putBoolean("islogin",true);
    // 提交数据
    editor.commit();
    
  • 点击添加按钮以后我们可以看到在data/data/应用程序包名/shared_prefs文件夹下生成了一个user.xmlxml文件。点击可以打开该文件,可以看到该文件保存了如下的数据

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <map>
        <string name="name">lucas</string>
        <int name="age" value="30" />
        <boolean name="islogin" value="true" />
    </map>
    
  • 效果展示

读取数据

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

    SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
    String name = sharedPreferences.getString("name","");
    int age = sharedPreferences.getInt("age",0);
    boolean islogin = sharedPreferences.getBoolean("islogin",true);
    Log.i("lucashu","name:"+ name +" age:" + age +" islogin:" + islogin);
    

删除数据

  • 删除数据增加数据有点类似 也是通过Editor对象来完成

    //通过对应存储文件名得到要操作的SharedPreferences对象
    SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
    //获取Editor对象的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    //删除key对应的值
    editor.remove("name");
    // 提交数据
    editor.commit();
    

修改数据

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

    //通过对应存储文件名得到要操作的SharedPreferences对象
    SharedPreferences sharedPreferences = getSharedPreferences("user",MODE_PRIVATE);
    //获取Editor对象的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    //将新的值放入要修改数据对应的key进行覆盖
    editor.putString("name", "lucas1");
    editor.putInt("age", 31);
    editor.putBoolean("islogin",false);
    // 提交数据
    editor.commit();
    

清除数据

  • 可以通过Editor对象的clear方法来完成清除数据

    //通过对应存储文件名得到要操作的SharedPreferences对象
    SharedPreferences sharedPreferences = getSharedPreferences("user", MODE_PRIVATE);
    //获取Editor对象的引用
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.clear();
    // 提交数据
    editor.commit();
    
  • 清除以后user.xml文件并不会删除,但里面的数据都没了

标签:SharedPreferences,name,editor,sharedPreferences,Android,解析,数据,Editor
From: https://www.cnblogs.com/ajunjava/p/18325654

相关文章

  • Dynamsoft Barcode Reader SDK Android Package 10.2.11
    BarcodeScannerforMobileIntegraterobustscanningcapabilitiesforQRcodeandotherbarcodetypesintoyournativeiOSandAndroidapps.DynamsoftBarcodeReaderSDKAndroidPackage10.2.11-Milli-SecondSpeedforMobileVideoStreamsUnderinteractive......
  • Android Studio自带Profiler工具内存泄露分析步骤
    1、运行需要检测内存泄露的程序这里以“com.example.opengltest”程序为例。2、点击Profiler按钮3、点击SESIONS"+"号按钮选择设备,选择对应设备下的应用或进程4、双击内存区块5、操作应用程序要检测的部分或模块6、关闭应用程序,多次点击鼠标右键“Forcegabagecollectio......
  • 表面贴装差分输出晶体振荡器 DSO533SK/DSO533SJ 全面解析
    表面贴装差分输出晶体振荡器DSO533SK/DSO533SJ全面解析摘要:本文深入探讨表面贴装差分输出晶体振荡器DSO533SK/DSO533SJ的特性、工作原理、优势、应用领域以及使用中的关键要点。通过详细的阐述和实例分析,为读者提供全面且深入的技术解读。一、引言在当今高度集成和高......
  • 用Python解析邮件日志
    我的任务有点困难。我有一个邮件日志,如:Oct315:30:18mail1postfix/lmtp[5369]:DB10242054:to=<XXXXX>,orig_to=<XXXXXX>,relay=ip[ip]:port,delay=1.4,delays=0.04/0/0.01/1.4,dsn=2.0.0,status=sent(2502.0.0fromMTA(smtp:[iP]:port):2502.0.0Ok:queueda......
  • android[activity过渡动画不正确,不执行,效果不对?]style配置方式
    单个配置activity或者application全局配置<stylename="translucent"parent="Theme.MaterialComponents.Light.NoActionBar"><itemname="android:windowNoTitle">true</item><itemname="android:windowTitleSize&qu......
  • 【Android】数据存储方案——文件存储、SharedPreferences、SQLite数据库用法总结
    文章目录文件存储存储到文件读取文件SharedPreferences存储存储获取SharedPreferences对象Context类的getSharedPreferences()方法Activity类的getPreferences()方法PreferenceManager类中的getDefaultSharedPreferences()方法示例读取记住密码的功能SQLite......
  • CET6英语六级真题及答案解析下载电子版pdf2024年6月
    大学英语六级真题在线试卷电子版PDF听力及答案解析–学习备忘录(201800.com)2024年6月CET6真题及答案解析,扫码下载电子版PDF:李明,是一名即将大三的学生。他一直梦想着能够顺利通过大学英语六级考试(CET-6),因为他知道这不仅能够证明自己的英语水平,还可能为将来的就业或留学提供......
  • delphi android发送与接收广播
    在Delphi中,可以使用TLocalBroadcastManager类来发送和接收广播。以下是一个示例:发送广播:```delphiuses Androidapi.JNI.GraphicsContentViewText,Androidapi.Helpers,Androidapi.JNI.JavaTypes,Androidapi.JNI.LocalBroadcastManager;procedureSendBroadcast(constAAction:......
  • AI大模型的革命:解析全球主流AI大模型及其对比分析
    在人工智能领域,AI大模型的发展正在改变我们的世界。无论是自然语言处理、图像识别,还是自动驾驶和医疗诊断,AI大模型都展示出其强大的潜力和广泛的应用前景。本文将介绍当前世界上主流的AI大模型,并对各个模型做详细介绍和横向对比,深入探讨这些模型的特点、优势以及应用领域。......
  • Android 屏幕自适应
    介绍autosizeautosize是一个Android开源库,旨在简化适配不同屏幕尺寸和分辨率的工作。它主要解决了在不同设备上,应用界面可能因屏幕尺寸、分辨率和像素密度不同而出现的布局问题。自动适配:自动根据屏幕尺寸和分辨率调整布局大小和字体大小,减少了手动调整的工作量。支持......