1、概述
SharedPreferences 是 Android 提供的一种轻量级存储类,用于存储简单的键值对数据。它非常适合保存应用的配置信息、用户偏好设置等。SharedPreferences支持数据类型String、int、float、long、boolean、Set(字符串集合),它的数据以 XML 文件的形式存储在应用的私有目录中,文件名由开发者指定,因此数据具有较高的安全性。
2、保存数据
val editor = context.getSharedPreferences(“prefs_data”, Context.MODE_PRIVATE).edit()
editor.putString("serverIp", "127.0.0.1")
editor.putInt("port", 21)
editor.apply() // 异步提交
//editor.commit() // 同步提交,返回成功与否的结果
- prefs_data: 是存储文件的名称,实际路径存储为 /data/data/<packageName>/shared_prefs/ 。
- Context.MODE_PRIVATE: 表示该文件只能被当前应用访问。
3、读取数据
val prefs = context.getSharedPreferences(“prefs_data”, Context.MODE_PRIVATE)
val serverIp = prefs.getString("serverIp", "127.0.0.1") // 127.0.0.1为默认值
val port = prefs.getInt(“port”, 21)
4、删除数据
val editor = context.getSharedPreferences(“prefs_data”, Context.MODE_PRIVATE).edit()
editor.remove("serverIp") // 删除key为serverIp的数据
editor.apply()
5、清空数据
val editor = context.getSharedPreferences(“prefs_data”, Context.MODE_PRIVATE).edit()
editor.clear()
editor.apply()
6、注意事项
- 线程安全:SharedPreferences 是线程安全的,可以在多个线程中同时读写。
- 存储限制:SharedPreferences 适合存储少量的键值对数据(如用户设置)。如果需要存储大量数据,建议使用数据库(如 SQLite 或 Room)。
- 数据安全性:SharedPreferences 数据存储在应用的私有目录中,其他应用无法访问。但如果设备被 root,数据可能会被篡改。如果需要存储敏感信息(如密码),建议进行加密处理。
- 同步与异步:
editor.apply():异步提交更改,不会阻塞主线程。
editor.commit():同步提交更改,会返回操作是否成功的布尔值,但可能会阻塞主线程。