1.SharedPreferences的概念
SharedPreferences是Android平台上一个轻量级的存储类,主要存储一些应用程序的配置参数,例如用户名、密码、自定义参数的设置等。SharedPreferences中存储的数据是以key/value键值对的形式保存在XML文件中,该文件位于data/data/<packagename>/shared_prefs文件夹中。
注意:SharedPreferences中的value值只能是float、int、long、boolean、String、StringSet类型数据
2.使用SharedPreferences存储数据
使用SharedPreferences类存储数据时,首先需要通过context.getSharedPreference(String name,int mode)获取SharedPreferences的实例(在Activity中可以直接使用this代码上下文,如果不在Activity中则需要传入一个Context对象获取上下文)
SharedPreferences sp=context.getSharedPreferences(String name,int mode);
name表示文件名,mode表示文件操作模式,该模式有多个值可供选择
- MODE_PRIVATE:指定该SharedPreferences中的数据只能被本应用程序读写
- MODE_APPEND:该文件的内容可以追加
- MODE_WORLD_READABLE:指定该SharedPreferences中的数据可以被其他应用程序读
- MODE_WORLD_WRITEABLE:指定该SharedPreferences中的数据可以被其他应用程序读写
SharedPreferences的相关方法
方法声明 | 功能描述 |
---|---|
Boolean contains(String key) | 判断SharedPreferences是否包含特定key的数据 |
abstract Map<String,?>getAll() | 获取SharedPreferences中的全部key/value的键值对 |
boolean getBoolean(String key,boolean defValue) | 获取SharedPreferences中指定key对应的boolean值 |
int getInt(String key,int defValue) | 获取SharedPreferences中指定key对应的Int值 |
float getFloat(String key,float defValue) | 获取SharedPreferences中指定key对应的float值 |
long getLong(String key,long defValue) | 获取SharedPreferences中指定key对应的long值 |
String getString(String key,String defValue) | 获取SharedPreferences中指定key对应的String值 |
Set<String> getStringSet(String key,Set<String> Value) | 获取SharedPreferences中指定key对应的set值 |
注意的是,SharedPreferences对象本身只能获取数据,并不支持数据的存储和修改,数据的存储和修改需要通过SharedPreferences.Editor对象实现。
SharedPreferences.Editor对象的相关方法
方法声明 | 功能描述 |
---|---|
SharedPreferences.Editor edit() | 创建一个Editor对象 |
SharedPreferences.Editor putString(String key,String value) | 向SharedPreferences中存入指定key对应的String值 |
SharedPreferences.Editor putString(String key,int value) | 向SharedPreferences中存入指定key对应的int值 |
SharedPreferences.Editor putString(String key,float value) | 向SharedPreferences中存入指定key对应的float值 |
SharedPreferences.Editor putString(String key,long value) | 向SharedPreferences中存入指定key对应的long值 |
SharedPreferences.Editor putString(String key,boolean value) | 向SharedPreferences中存入指定key对应的boolean值 |
SharedPreferences.Editor putString(String key,Set<String> value) | 向SharedPreferences中存入指定key对应的set值 |
SharedPreferences.Editor remove(String key) | 删除SharedPreferences指定key所对应的数据 |
SharedPreferences.Editor clear() | 清空SharedPreferences中的所有的数据 |
boolean commit() | 编辑结束后,调用该方法提交 |
SharedPreferences sp=getSharedPreferences("data",MODE_PRIVATE); //data表示文件名 Editor editor =sp.edit(); editor.putString("name","张三"); editor.putInt("age",8); editor.commit(); //提交修改
获取数据,只需要创建SharedPreferences对象获取相应的key值即可
SharedPreferences sp=context.getSharedPreferences();
String data = sp.getString("name",""); //获取用户名
删除数据与存储数据类似
SharedPreferences sp=context.getSharedPreferences();
Editor editor=sp.edit();
editor.remove("name"); //删除一条数据
editor.clear(); //删除所有数据
editor.commit(); //提交修改
注意:
- 存入数据和删除数据时,一定要在最后使用editor.commit()方法提交数据
- 获取数据的key值与存入数据的key值的数据类型要一致,否则找不到数据
- 保存SharedPreferences的key值时,可以用静态变量保存,以免存储、删除时写错