Android 数据持久化(SharedPreferences)

一、Android 数据持久化概述

1. 为什么需要数据持久化?
  • 手机内存是易失性的,应用关闭或设备重启会导致数据丢失。

  • 持久化技术可将数据保存到内部存储、外部存储或数据库中,确保数据长期存在。

2. Android 数据存储方式
  • 文件存储:适用于少量数据。

  • SharedPreferences:适用于键值对数据。

  • SQLite 数据库:适用于结构化数据。

  • ContentProvider:用于应用间数据共享。

  • 网络存储:将数据存储到网络服务器。


二、SharedPreferences 详解

1. 基本概念
  • 键值对(key-value) 形式存储数据。

  • 支持的数据类型:intfloatlongbooleanStringStringSet

  • 存储的数据类型与读取时一致。

2. 文件格式与存储位置
  • 数据以 XML 文件 形式保存。

  • 存储路径示例

    复制代码
    data/data/包名/shared_prefs/文件名.xml
  • 应用被卸载时,该文件会被删除。

3. 适用场景
  • 存储简单、孤立的数据。

  • 存储文本形式的数据。

  • 需要持久化的数据(应用重启后仍有效)。

三、SharedPreferences 的使用

1. 获取 SharedPreferences 实例
java 复制代码
SharedPreferences sp = getSharedPreferences("name", mode);
  • name:文件名。

  • mode

    • MODE_PRIVATE:仅当前应用可访问(默认)。

    • MODE_APPEND:通常不用于 SharedPreferences。

2. 写入数据
  • 需通过 SharedPreferences.Editor 对象操作:

    java 复制代码
    SharedPreferences.Editor editor = sp.edit();
    editor.putString("name", "张三");
    editor.putInt("age", 20);
    editor.apply(); // 或 editor.commit();
  • commit():立即写入(同步)。

  • apply():后台写入(异步)。

3. 读取数据
java 复制代码
String name = sp.getString("name", "默认值");
int age = sp.getInt("age", 0);
boolean remember = sp.getBoolean("remember", false);

四、代码示例

java 复制代码
// 获取实例
SharedPreferences sp = getSharedPreferences("MyPreferences", MODE_PRIVATE);

// 写入数据
SharedPreferences.Editor editor = sp.edit();
editor.putString("key_name", "value");
editor.putInt("key_age", 30);
editor.apply();

// 读取数据
String name = sp.getString("key_name", "default");
int age = sp.getInt("key_age", 0);

// 输出
Log.d("Preferences", "Name: " + name + ", Age: " + age);
相关推荐
李堇2 小时前
android滚动列表VerticalRollingTextView
android·java
lxysbly3 小时前
n64模拟器安卓版带金手指2026
android
游戏开发爱好者86 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20356 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥6 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓6 小时前
[JDBC]元数据
android
独行soc7 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能7 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿7 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc7 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮