欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android学习笔记整理(13)--数据存储方式之SharedPreferences的使用

程序员文章站 2022-06-06 19:03:17
...
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对象中存入数据,需要先获取SharedPreferences对象,通过该对象获取Editor对象,然后通过Editor对象的相关方法存储数据,
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值时,可以用静态变量保存,以免存储、删除时写错
        如:private static final String key ="example";