简单易用的安卓SharedPreferences存储(数据存储系列)
theme: channing-cyan
本文正在参加「金石计划 . 瓜分6万现金大奖」
前言
本篇主要介绍本人在工作最常用的数据存储方法——haredPreferences存储,即sp存储,该方式存储比较方便,用于存储用户本地持久化数据,使用过程中也出现过一些不好解决的坑,但不可否认,如果需求有一些需要APP本地存储的数据,我还是会首选sp存储,毕竟写起来很容易(工作开发的项目代码已经将其简化封装为工具类,只要写key和set方法与get方法即可调用,所以感觉很方便)。
正篇
SharedPreferences存储概述
该存储方式是使用键值对(key-value)进行存储数据,换而言之,当我们想用其保存一条数据,需要给这条数据提供一个对应的键(key),然后在读取数据的时候就可以通过这个键(key)将相应的值(value)取出。
该存储方式支持多种不同的数据类型存储:
如上面两个图所示,该方法支持以下几种数据类型:\ 1.int(整型)\ 2.long(长整型)\ 3.float(浮点型)\ 4.String(字符串)\ 5.Set<String>(字符串集合)\ 存入以上对应的类型,我们在取出时也会获得同样类型的数据。
使用方法
存储数据
首先,我们看看sp存储的存数据方法:\
1.getSharedPreferences()方法
这个方法是Context类提供的,该方法的第一个参数可以用来指定文件名称,名称不存在就会创建一个,Sp存储文件存放地址为/data/data/< package name >/shared_prefs/目录下;它的第二个参数则是用于指定操作模式,不过只有MODE_PRIVATE这个默认模式可用,等于直接传入0,这个模式意思是只有当前程序才可以对这个Sp文件进行读写。
2.getPreferences()方法
这个方法是Activity类中提供的:
这个方法只有一个参数,即操作模式,而且该方法会将当前的Activity类名直接作为Sp文件名,其他都和getSharedPreferences()方法相似。
使用实例:
布局中我们加一个按钮
XML布局:
```XML
<Button
android:id="@+id/saveButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/default_a"
android:text="@string/save_data"/>
然后在Activity中在按钮的点击事件时使用Sp存储存入元素:
Kotlin
class SharedPreferencesDemo : AppCompatActivity() {
lateinit var binding : ActivitySharedPreferencesDemoBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySharedPreferencesDemoBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.saveButton.setOnClickListener {
val editor = getSharedPreferences("data", Context.MODE_PRIVATE).edit()
editor.putString("name", "Tom")
editor.putInt("age", 18)
editor.putBoolean("married", false)
editor.apply()
}
//Demo
val edit = getPreferences(Context.MODE_PRIVATE).edit()
edit.putLong("id", 5555555)
edit.apply()
}
} ``` 我们运行程序,然后按一下按钮:
接着我们就可以在设备文件管理器中找到data.xml的文件:
这就表示存下来了。
Sp文件读取数据方法
存储数据的时候我们用了putXXX()的方法,去存储了key-value型数据,所以取数据更为简单,就是直接去对应类型的getXXX()方法传入对应的key即可以取出该类型的数据,当然为了在找不到存储值时有对应的数据获取,我们在getXXX()的第二个参数中传入默认值,如下所示:
Kotlion
binding.restoreButton.setOnClickListener {
val prefs = getSharedPreferences("data", Context.MODE_PRIVATE)
val name = prefs.getString("name", "")
val age = prefs.getInt("age", 0)
val married = prefs.getBoolean("married", false)
Log.d("Main", "name is $name, age is $age, married is $married")
}
这样我们就能取出我们存储的数据,非常简单好用。
总结
虽然Sp存储现在已经有更好的技术去替换(MMKV),但Sp存储的原理还是需要我们去了解的,当然,作为安卓数据存储技术,它还是需要我们去熟练使用,这篇文章主要就是简单的介绍了Sp存储的基本使用方法,如果需要深入了解,还是去阅读源码最好,此外,后面我也会去学习MMKV,虽然目前接触项目还没有使用。
- 安卓开发一年技术小结——安卓开发技术整理
- 安卓Kotlin开发学习——接着看高阶函数
- 兔兔按钮——安卓悬浮按钮
- 兔兔进度条Plus——SeekBar充当Progress
- 安卓基础开发——ReentrantLock的简单使用
- 安卓开发基础——使用RecyclerView
- 安卓开发基础(Java)——TextView的使用
- 安卓开发基础——弱引用的使用
- 安卓开发基础——实现音频文件的播放
- 让UI忙碌的安卓Lottie动画渲染库(二)
- 强大而灵活的RecyclerView Adapter——BRVAH(框架引入与BaseQuickAdapter使用篇)
- 安卓语言基础之Kotlin的面向对象编程
- 安卓语言基础之Kotlin高阶函数——Lambda表达式(二)
- 大放光彩的安卓Jetpack组件-ViewModel(一)
- 安卓语言基础之Kotlin高阶函数——Lambda表达式(一)
- 安卓开发必备——build.gradle文件初探(一)
- 安卓开发学Flutter——Dart语法的一些注意点(第二篇)
- 简单易用的安卓SharedPreferences存储(数据存储系列)
- 安卓开发基础技术——WebView加载网页
- 原汁原味的安卓文件存储(数据存储系列)