使用SharedPreferences存储简单数据
这是一种轻量级数据存储方式,通过SharedPreferences,可以将NVP(Name/Value pair, 名称/值对)保存到Android的文件系统中,并且它屏蔽了对文件系统的操作过程,仅通过SharedPreferences提供的函数就可以方便地实现对NVP的保存和读取。
NVP,或描述为键值对(key,value),key是一个用来代替value来进行操作的关键字名,为String型,如:private final static String USERNAME = “username”;而value是用户保存的数据。
下面略写SharedPreferences的一般使用方式。
1. 一般步骤
1.1 命名SharedPreferences存储的名字,以及需要存储value的key
private final static String SP_INFO = "Login"; // 创建的 Sharedpreferences 存储的名字,
private final static String USERNAME = "username"; // USERNAME和PASSWORD即为两个key
private final static String PASSWORD = "password";
1.2 使用getSharedPreferences()函数创建实例
SharedPreferences sp = getSharedPreferences(SP_INFO, MODE_PRIVATE);
getSharedPreferences()函数的原型为:public SharedPreferences getSharedPreferences(String name, int mode),其中name为存储名,如上一步中的“SP_INFO”;mode为访问模式,有三种类型:MODE_PRIVATE(私有)、MODE_WORLD_READABLE(全局读)、MODE_WORLD_WRITEABLE(全局写)。
1.3 使创建的sp处于可编辑状态
SharedPreferences.Editor editor = sp.edit();
使用创建的实例sp调用SharedPreferences类提供的edit()方法,可使sp处于可编辑状态,edit()方法返回SharedPreferences.Editor接口实例。该接口的常用方法如下:
| 方法名称 | 描述 |
|---|---|
| public abstract clear() | 清除所有数据 |
| public abstract boolean commit() | 提交更新的数据 |
| public abstract putBoolean(Sring key, boolean value) | 保存boolean类型的数据 |
| public abstract putFloat(String key, float value) | 保存float类型的数据 |
| public abstract putInt(String key, float value) | 保存int类型的数据 |
| public abstract putLong(String key, long value) | 保存long类型的数据 |
| public abstract putString(String key, String value) | 保存String类型的数据 |
| public abstract remove(String key) | 删除指定key的数据 |
1.4 保存数据
editor.putString(USERNAME, username);
editor.putString(PASSWORD, password);
使用上一步返回的实例editor来调用SharedPreferences.Editor接口提供的方法保存数据,以键值对 (key, value) 方式保存。
1.5 提交更新的数据
editor.commit();
至此,数据保存步骤完毕。
以下,为数据读取的步骤。
1.6 读取数据
String username = sp.getString(USERNAME, null);
String username = sp.getString(PASSWORD, null);
用sp实例调用SharedPreferences提供的方法读取数据。常用的方法如下:
| 方法名称 | 描述 |
|---|---|
| public abstract SharedPreferences.Editor edit() | 使实例处于可编辑状态 |
| public abstract Boolean contain(String key) | 判断一个key是否存在 |
| public abstract Map<String,?> getAll() | 读取全部数据 |
| public abstract boolean getBoolean(String key, boolean defValue) | 读取boolean类型数据,如果读取失败,返回指定的默认值defValue |
| public abstract float getFloat(String key, float defValue) | 读取float类型数据,如果读取失败,返回指定的默认值defValue |
| public abstract int getInt(String key, int defValue) | 读取int类型数据,如果读取失败,返回指定的默认值defValue |
| public abstract long getLong(String key, long defValue) | 读取long类型数据,如果读取失败,返回指定的默认值defValue |
| public abstract String getString(String key, String defValue) | 读取String类型数据,如果读取失败,返回指定的默认值defValue |
2. Demo
一个练习的例子。若有错误或不妥之处,欢迎指正,欢迎交流!
https://github.com/devilanwen/A-demo-of-SharedPreferences
博客介绍了如何在Android中使用SharedPreferences进行轻量级数据存储,包括命名存储名字、创建实例、使存储处于可编辑状态、保存和读取键值对数据的步骤,并提供了一个Demo示例链接。
325

被折叠的 条评论
为什么被折叠?



