Android-SharedPreferences 使用详解

Android-SharedPreferences 使用详解

参考

developer.android.google.cn/reference/a…

Overview

SharedPreferences是个好东西,我们可以用它来存储一些个性化的设置信息或者是一些简单的数据,SharedPreferences是基于XML文件的。如果有大量的数据要存储的话它是不合适的(这时候可以考虑使用Sqlite数据库来存储)。

如何获取SharedPreferences

方法名称解释
context.getSharedPreferences(string,int)可以获取或者创建指定名称的SharedPreferences
Activity.getPreferences(int)获取以当前Activity名称命名的SP,实际上还是调用了getSharedPreferences 方法实现的

先来看一下 getPreferences 方法的源码,我们可以发现 getPreferences 也是调用的 getSharedPreferences 方法。

public SharedPreferences getPreferences(@Context.PreferencesMode int mode) {
    return getSharedPreferences(getLocalClassName(), mode);
}
复制代码

SharedPreferences使用实例

//向Shared Preferences中写入数据
fun writeData(view: View) {
    val sp = getSharedPreferences("data", Context.MODE_PRIVATE)
    val editor = sp.edit()
    editor.putString("UserName", "This is a username")
    editor.apply()
    Toast.makeText(this, "Write successfully!", Toast.LENGTH_SHORT).show()
}

//从Shared Preference读取数据
fun readData(view: View) {
    val sp = getSharedPreferences("data", Context.MODE_PRIVATE)
    val userName = sp.getString("UserName", "")
    Log.e("TAG", userName)
}
复制代码

apply和commit方法

apply 和 commit 方法都可以完成 SharedPreferences 数据的提交和保存,但是这两个方法会有一些不同的地方。 apply 和 commit 的操作都是原子性的但是略有区别。

apply 方法 void apply();

如果同一个 SharedPreferences 的多个Editor 同时进行 apply操作,那么以最后一个为准。

apply 并没有返回值,apply方法的操作流程是先将数据提交到内存中的SharedPreferences中(将数据提交到内存中这次操作是原子性的),然后异步地将数据库写入到磁盘中(这一操作不是原子性的是可以被打断的),所以无法获取apply操作是否成功,但是apply方法要比commit 方法要快速,如果你并不关心保存是否成功的结果的话,那么推荐使用此方法。

commit 方法 boolean commit ()

如果同一个 SharedPreferences 的多个Editor 同时进行 commit 操作,那么以最后一个为准。

很明显 commit 方法是具有返回值的,与apply方法不同的, commit 方法是直接将数据写入到 持久化存储 中。 这一过程都原子性的并且是同步的。如果你比较关心,保存的结果的话,推荐使用此方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值