使用SharedPreferences存储简单数据

使用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 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)