首页
学习
活动
专区
圈层
工具
发布

Android SharedPreferences的使用

Context 类中的 getSharedPreferences()方法: 此方法接收两个参数,第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个,第二个参数用于指定操作模式...Activity 类中的 getPreferences()方法: 这个方法和 Context 中的 getSharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为...SharedPreferences 的文件名。...2.SharedPreferences的使用 SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor...editor = sharedPreferences.edit(); //步骤3:将获取过来的值放入文件 editor.putString("name", “Tom”);

1.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    DataStore —— SharedPreferences 的替代者 ?

    瞎逛的时候发现了一个新东西,来和大家分享一下。 SharedPreferences 大家应该都用过,它的槽点很多,多到我专门写了一篇文章。 细数 SharedPreferences 的那些槽点 !...以上吐槽来自 AndroidX 添加的新成员 DataStore 的类注释,地址如下: https://cs.android.com/androidx/platform/frameworks/support...它是线程安全,且非阻塞的。尤其是,它解决了 SharedPreferences API 的设计缺陷。 好家伙,看起来这就是 SharedPreferences 的替代品了。...,现在并不足以替代 SharedPreferences 。...第二,越来越多的新特性都是基于 Kotlin 实现的了,甚至只对 Kotlin 提供支持,大有 Kotlin First 到 Kotlin Only 的趋势。

    80520

    源码分析多进程下的SharedPreferences

    多进程下的SharedPreferences情况 先启动主进程并获取SharedPreferences对象,然后对值进行修改,然后启动其他进程并获取SharedPreferences对象,能取得修改后的值...SecurityException("MODE_WORLD_WRITEABLE no longer supported"); } } } 可以看到,这里将SharedPreferences...,从代码上也可以看出来,就是将Editor的所有put进去的值添加到SharedPreferences的mMap成员变量中。...那么最后将内容写入磁盘的方法就是enqueueDiskWrite了,我们看一下它的源码 private void enqueueDiskWrite(final MemoryCommitResult...) Android的SharedPreferences采用了这种模式,主要还是为了防止频繁通过IO读取磁盘带来的性能开销,毕竟SharedPreferences还是比较常用的,如果实时去磁盘文件进行读取

    62810

    SharedPreferences实现记住密码的登录界面-Android

    好了,我们今天就来使用它们当中的 SharedPreferences来实现一下简单的记住密码功能。 不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的。...将数据存储到 SharedPreferences 中 首先需要获取到SharedPreferences 对象,Android中主要提供了3种方法用于得到 SharedPreferences 的对象。...-3.调用 apply() 方法将添加的数据提交,从而完成数据存储操作。...如果没有被选中,就简单调用一下 clear()方法,将 SharedPreferences 文件中的数据全部清除掉。...因为当用户选中了记住密码复选框,并成功登陆了一次后,remember_password 键对应的值就是 true 了,这时候如果重启进入登陆界面,就会从 SharedPreferences 将保存的账号和密码读取出来

    2.6K10

    android 数据存储---- SharedPreferences实现数据的存储

    SharedPreferences作为android的存储方式有以下特点: 1.只能存放key-value模式的键值。 2.本质就是就是以xml文件在应用程序所在包中存放数据。...SharedPreferences 通过操作android的SharedPreferences类来完成xml文件的生成,增,删,改 的动作都由android系统内部模块完成和解析的。...用户不需要去  xml文件的生成和解析 4.由于 SharedPreferences 只能存放key-value  简单的数据结构,通过用来做软件配置参数,用来配置用户对软件的自定义或设置参数。...如果要存在复杂的数据,可以使用文件,如果还需要方便的增删改查 的话,就只能用Sqlite数据库来完成 下面是该使用的代码: 所用的字符串 <?...android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor

    6.4K50

    笔记39 | 数据存储之SharedPreferences的介绍及使用

    www.jianshu.com/p/c10c08affa8f CSDN: http://blog.csdn.net/xiangyong_1521/article/details/51222418 ---- 概念 SharedPreferences...:是android提供的一个轻量级的储存方式,当我们需要保存用户的某些settings值,需要轻量级的记忆操作等时使用!...SharedPreferences的四种操作模式: Context.MODEPRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容Context.MODEAPPEND...如图示,需要在项目中记录一个DATE和ODO值,其中ODO值为某个实时的can数据,DATE即为当前时间,点击右端的更新按钮就需要将这两个实时值存储在本地用,并显示: 存 /* * 存 */ write...SharedPreferences preferences_eo = getActivity().getSharedPreferences("eo", Context.MODE_PRIVATE

    79140

    深入剖析Android中最简单的数据存储方式:SharedPreferences

    这篇文章,我将详细的和大家讲一下如何使用SharePreferences进行数据的存储和读取, 一....使用SharedPreferences存储数据 使用SharedPreferences进行存储的数据是存放在一个XML文件中的,同时它的存储方式是是以key-value的形式,key对应着将要存储的数据的名称...数据的存储位置和格式 既然是将数据存储到了文件中,那么总会有文件的存储位置的,实际上,SharedPreferences 将数据文件写在了手机内存私有的目录中该app的文件夹下。...通常会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在XML文件中。 实例: 使用 SharedPreferences 保存Product类的一个对象和一张图片。...,新写入的内容会追加到原文件中 Activity.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取 Activity.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入

    3.4K10

    Android项目中多次操作SharedPreferences导致ANR场景的解决

    以定位来获取广告的方式为例: 首先利用用户的定位等权限来获取经纬度 将经纬度上传至国内某定位SDK,获取具体信息。 最后根据定位信息来获取广告并预加载为广告展示做准备。...分析异常收集中ANR日志将问题锁定在SharedPreferences 上,排查过程比较麻烦,在锁定了问题后,开始对问题进行分析。...翻译:如果SharedPreferences上的另一个编辑器执行常规的commit(),而apply()仍然未完成,则commit()将阻塞,直到所有异步提交以及提交本身都完成。...(8.0以下) 问题的解决 当时的优化: 1.减小sp对应的文件的大小,按照分类去读写对应的sp文件。 2.sp的读写轻量的、小的配置信息,将类似JSON的数据交给其他方式保存。...友盟平台相关SDK初体验: 由于ANR的比较难复现,于是写一个方法,反复对SharedPreferences进行操作,以达到类似情况的复现。

    24000

    Flutter的两种本地存储方式之 SharedPreferences(1)

    SharedPreferences 存储 缓存少量的键值对信息(比如记录用户是否阅读了公告,或是简单的计数),可以使用 SharedPreferences。...SharedPreferences 会以原生平台相关的机制,为简单的键值对数据提供持久化存储,即在 iOS 上使用 NSUserDefaults,在 Android 使用 SharedPreferences...SharedPreferences 的使用方式非常简单方便。不过需要注意的是,以键值对的方式只能存储基本类型的数据,比如 int、double、bool 和 string。...,以异步的方式对这些操作进行包装 //读取SharedPreferences中key为counter的值 Future _loadCounter() async { SharedPreferences...,然后将数据保存至磁盘,因此无需再调用更新方法强制刷新缓存 } _fresh() { // _incrementCounter(); _incrementCounter().

    1.6K40

    微信MMKV团队:SharedPreferences替代方案的6个核心指标

    引言:为什么连谷歌都放弃SharedPreferences? “SharedPreferences又双叒叕导致ANR了!”——这是无数Android开发者深夜崩溃的呐喊。...作为Android系统最古老的存储方案,SharedPreferences(简称SP)曾以简单易用著称,但在高并发、大数据场景下,其性能瓶颈和设计缺陷日益暴露。...多进程灾难• 文件锁冲突:跨进程读写时可能数据错乱或丢失 二、MMKV的6大核心指标:碾压级技术方案 指标1:性能——300倍速度飞跃 技术实现: • 内存映射(mmap):将文件直接映射到虚拟内存...耗时(ms) SharedPreferences 1200 SQLite 800 MMKV 7 指标2:稳定性——微信8亿用户的考验 • Crash防护: • 写时复制(Copy-on-Write):...修改时创建新内存页,避免写入崩溃导致文件损坏 • CRC校验:每次写入后计算校验码,异常时自动回滚到上次完整状态 • 空间自愈: • 内存页动态扩展:按4KB内存页粒度分配,写满时自动扩容 指标

    69210

    基于Kotlin的委托机制实现一个对Extra、SharedPreferences操作的库

    一群可爱的小女孩.jpg Kotlin 的委托属性 有一些很常见的属性,虽然我们可以在每次需要它们的时候手动地实现它们,但更好的方法是一次性全部实现,然后放进一个库里面。...换句话说,对其属性值的操作不再依赖于其自身的getter()/setter()方法,而是将其托付给一个代理类,从而每个使用类中的该属性可以通过代理类统一管理。...封装SharedPreferences 2.1 SharedPreferences存放int、long、float、boolean、string以及Set 2.1.1 下载安装 Gradle...: implementation 'com.safframework.delegate:prefs-delegate:1.0.0' 2.1.2 特点 支持 SharedPreferences 的int、...long、float、boolean、string以及Set 支持对上述类型使用 AES 算法进行加密,以保障数据安全 没有使用 AES 算法,SharedPreferences的数据文件大致是这样的

    1.3K30

    SharedPreferences再三问—bilibili真题

    昨天我们深入了解了部分SharedPreferences的知识点,今天继续说说SharedPreferences,并简单谈下有没有什么替代品可以解决SharedPreferences的那些问题。...、handleStopActivity等方法)会一直等待apply方法将数据保持成功,从而会阻塞主线程,造成ANR。...SharedPreferences有什么比较好的替代品吗?改进了那些点呢?...Jetpack DataStore,官方出的替代品,基于kotlin协程和Flow实现的,一种新的数据存储方案,它提供了两种实现方式——Proto DataStore和Preferences DataStore...3)可以自动完成 SharedPreferences 迁移到 DataStore 4)可以监听到操作成功或者失败结果 MMKV 是腾讯开源的一款基于 mmap 内存映射的key-value 组件,底层序列化

    1.1K10
    领券