码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SharedPreferences()存储


    目录

    1.将数据存入SharedPreferences中

    2.读取SharedPreferences中的数据

    3.删除SharedPreferences中的数据


    SharedPreferences是Android平台上一个轻量级的存储类,当程序中有一些少量数据需要持久化存储时,可以使用SharedPreferences进行存储。例如存储程序中的用户名、密码、自定义的一些参数等。

    1.将数据存入SharedPreferences中

    使用SharedPreferences存储者数据时,首先需要调用getSharedPreferences()方法获取SharedPreferencs实例对象。因为该对象本身只能获取数据,不能对数据进行存储和修改,所以需要调用ShoredPreferences的edit()方法获取到可编辑的Editor对象,最后通过Editor对象的putXxx()方法存储数据。

    1. 例.
    2. //获取SharedPreferences对象
    3. SharedPreferences sp =getSharedPreferences("data",MODE_PRIVATE);
    4. //获取编辑器对象
    5. SharedPreferences.Editor editor=sp.edit();
    6. //添加数据
    7. editor.putStning("name",“张三”);
    8. editor.put Int("age",8);
    9. //提交数据(不推荐本方法)
    10. editor.commit(); →淘汰,但仍能使用
    11. //提交数据(推荐本方法)
    12. editor.apply(); →推荐

    由上述代码可知,Editor对象是以键值对(key/value)的形式保存数据的,并且根据数据类型的不同会调用不同的方法。操作完数据后,一定要调用commit()方法或apply()方法进行数据提交,否则所有操作不生效。 
    需要注意的是,SharedPreferences中的Editor编辑器是通过键值对的形式将数据保存在data/data//shared_prefs文件夹的XML文件中,其中value值只能是Float、Int、Long、Boolean、String、Set类型的数据。


    commit()方法是同步的,提交成功返回true,提交失败返回false,数量大时可能阻塞主线程;需要提交结果时用commit()方法,可能阻塞线程。不推荐使用,会阻塞线程。
    apply()方法是异步的,它会立即返回,而不会阻塞调用线程,apply()方法会将修改的数据放入一个内存中的队列中,然后异步写入磁盘,需要效率不用返回结果时用apply()方法。推荐使用,效率高。

    2.读取SharedPreferences中的数据

    读取SharedPreferences中的数据只需要获取到SharedPreferences对象,然后通过该对象的getXxx()方法获取到相应Key的值即可。

    1. 例.
    2. Sharedpreferences sp=getSharedPreferences("data",MODE PRIVATE);
    3. String data= sp.getstring("name");

    需要注意的是,getXxx()方法的第二个参数为缺省值,如果SP对象中不存在该Key值,将返回缺省值。例如getString("name",""),若name不存在,则key值就返回空字符串。

    3.删除SharedPreferences中的数据

    如果需要删除SharedPreferences中的数据,则只需要调用Editor对象的remove(String key)方法或者clear()方法即可。

    1. 例
    2. editor.remove("name");
    3. editor.clear();
    4. //提交数据(不推荐本方法)
    5. editor.commit(); →淘汰 
    6. //提交数据(推荐本方法)
    7. editor.apply(); →推荐

  • 相关阅读:
    计算机基础之计算机的前沿技术
    解决Verilog中的generate_for问题,就是生成多个块,其区别于for块。
    精灵图练习---pink老师课程
    C语言零基础入门级 函数的作用域+存储器【系统学习第七天】
    C++ Reference: Standard C++ Library reference: C Library: cwchar: getwchar
    打工人都觉得香的 Java 程序员 306 道面试秘笈
    【微软漏洞分析】一个未修复的问题 MSRC-20706 - Windows 7:NtPowerInformation 中的管理员检查绕过
    docker部署es+kibana
    MyBatis foreach标签有什么作用呢?
    【论文笔记】—低照度图像增强—Supervised—基于频率的分解和增强模型—2020-CVPR
  • 原文地址:https://blog.csdn.net/m0_57150356/article/details/134453157
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号