一、概念
以键值对的方式保存少量的数据,通常用来存数程序的一些配置信息,如是否打开音效、是否使用震动效果、窗口状态、是否进入过向导界面等。
二、SharedPreference
- 路径:data/data/包名/shared_prefs。
- 三种获取方式:
- Context类中的getSharedPreferences()。
- Activity类中的getPreferences(),自动将当前Activity类名作为SP的文件名。
- PreferenceManager类中的getDefaultSharedPreferences(),自动将当前应用程序包名作为前缀来命名SP文件。
- commit()和apply()的区别:commit是同步的,会等待写入磁盘后再返回,而apply是异步的,在调用写磁盘操作后就直接返回了,但是这时候可能磁盘中数据还没有被修改。如果关心存入结果则使用commit如果不关心存入结果则使用apply。
//写入数据
val sp = getSharedPreferences("data", MODE_PRIVATE) //获取SP
val editor = sp.edit() //操作数据要通过编辑器
editor.putString("name", "Tom") //写入数据
editor.putInt("age", 28)
editor.apply() //一定要提交
//读取数据
val prefs = getSharedPreferences("data", MODE_PRIVATE) //名称要跟写入的一样
val name = prefs.getString("name", "") //第二个参数为没读取到数据的默认值
//KTX写法(会自动提交)
getSharedPreferences("data", MODE_PRIVATE).edit(true) {
putInt("num",123)
}