AndroidSharedPreferences教程:数据存储
166 浏览量
更新于2024-08-29
收藏 101KB PDF 举报
"在Android开发中,使用SharedPreferences进行数据存储是一种常见的做法。SharedPreferences是一个轻量级的存储机制,非常适合用来保存应用程序的配置参数。与Windows软件中的ini文件或Java应用中的properties、xml文件不同,Android提供了SharedPreferences类来方便开发者进行数据持久化。通过SharedPreferences,数据会被存储到XML文件中,位于应用的私有目录/data/data/<包名>/shared_prefs下。
使用SharedPreferences进行数据操作主要涉及以下几个步骤:
1. 获取SharedPreferences实例:通过调用`getSharedPreferences(String name, int mode)`方法,其中`name`参数是文件的名称,不包括.xml后缀,系统会自动加上。`mode`参数定义了文件的访问权限,通常使用`Context.MODE_PRIVATE`,表示只有本应用能访问。如果需要其他应用也能读写,可以使用`Context.MODE_WORLD_READABLE`和`Context.MODE_WORLD_WRITEABLE`。
2. 获取Editor对象:通过调用SharedPreferences实例的`edit()`方法,得到一个Editor对象,用于对数据进行修改。
3. 插入或修改数据:使用Editor对象的方法,如`putString(String key, String value)`来保存字符串,`putInt(String key, int value)`来保存整型值等。
4. 提交修改:调用Editor对象的`commit()`方法,将所有改动保存到SharedPreferences文件中。如果使用的是AndroidX,推荐使用`apply()`代替`commit()`,因为`apply()`是异步操作,不会阻塞主线程。
示例代码如下:
```java
SharedPreferences sharedPreferences = getSharedPreferences("ljq", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
editor.putString("name", "林计钦");
editor.putInt("age", 24);
editor.commit(); // 或者使用 editor.apply();
```
这会在共享偏好文件中创建一个名为“ljq”的XML文件,内容类似于:
```xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">林计钦</string>
<int name="age" value="24"/>
</map>
```
除了基本的数据类型,SharedPreferences还支持保存布尔值(`putBoolean()`)、浮点数(`putFloat()`)、长整型(`putLong()`)以及集合(`putStringSet()`)。在取出数据时,对应使用`getString()`, `getInt()`, `getBoolean()`, `getFloat()`, `getLong()`以及`getStringSet()`方法。
此外,Activity类还提供了快捷方法`getPreferences(int mode)`,它会使用当前Activity的类名作为文件名来获取SharedPreferences实例,这在处理Activity内的简单设置时非常方便。
SharedPreferences是Android中用于轻量级数据存储的一个实用工具,它的使用简单且高效,能满足大部分应用程序配置参数的保存需求。由于它是基于XML的,所以数据具有良好的可读性,并且可以跨进程共享(根据mode参数设置)。在开发过程中,合理利用SharedPreferences可以有效地管理应用的状态和用户设置。"
2021-01-21 上传
2020-09-02 上传
2023-07-13 上传
2023-07-13 上传
2024-09-10 上传
2023-06-03 上传
2023-06-03 上传
2023-03-16 上传
2023-05-31 上传
weixin_38706197
- 粉丝: 2
- 资源: 979
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展