Android五大存储方式之三——SharedPreferences

来源:互联网 发布:矩阵式项目组织形式 编辑:程序博客网 时间:2024/05/29 13:47

SharedPreferences简介

SharedPreferences是Android平台上一个轻量级的存储类,主要用于存储一些应用程序的配置参数,例如用户名、密码、自定义参数的设置等。SharedPreferences中存储的数据是以key/value键值对的形式保存在XML文件中,该文件位于data/data//shared_prefs文件夹中。需要注意的是,SharedPreferences中的value值只能是float、int、long、boolean、String、StringSet类型数据。

使用SharedPreferences类存储数据时,首先需要通过context.getSharedPreferences(String name,int mode)获取SharedPreferences的实例对象(在Activity中可以直接使用this代表上下文,如果不是在Activity中则需要传入一个Context对象获取上下文),示例代码如下:

SharedPreferences sp = context.getSharedPreferences(String name,int mode);

上述代码中,name表示文件名,mode表示文件操作模式。


SharedPreferences 的使用

SharedPreferences提供了一系列方法由于获取应用程序中的数据(将在下面的实例程序中使用)。需要注意的是,SharedPreferences对象本身只能获取数据,并不支持数据的存储和修改。
数据的存储和修改需要通过SharedPreferences.Editor对象实现。

存入数据
使用SharedPreferences存储数据是,需要先获取SharedPreferences对象,通过该对象获取到Editor对象,然后通过Editor对象的相关方法存储数据,具体代码如下:

SharedPreferences sp = getSharedPreferences("data",MODE_PRIVATE);//data表示文件名Editor editor = sp.edit();    //获取编辑器editor.putString("name","book");  //存入String类型数据editor.putInt("age",8);       //存入int类型数据editor.commit();           //提交修改

获取数据
SharedPreferences获取数据时比较简单,只需要创建SharedPreferences对象,然后使用该对象获取相应key的值即可,具体代码如下:

SharedPreferences sp = context.getSharedPreferences();String data = sp.getString("name","");     //获取用户名

删除数据
SharedPreferences删除数据时与存储数据类似,同样需要先获取到Editor对象,然后通过该对象删除数据,最后提交,具体代码如下:

SharedPreferences sp = context.getSharedPreferences();Editor editor = sp.edit();    editor.remove("name");     //删除一条数据editor.clear();           //删除所有数据editor.commit();           //提交修改

注意!!

  • SharedPreferences存入和删除数据时,一定要在最后使用editor.commit()方法提交数据。
  • 获取数据的key值与存入数据的key值的数据类型要一致,否则查找不到数据。
  • 保存SharedPreferences的key值时,可以用静态变量保存,以免存储、删除时写错了,如:private static final String key = “itcast”;。

示例——保存QQ号码和密码
使用SharedPreferences存储数据是一个比较独立的模块,因此,建立一个单独的类,用于实现QQ号码和密码的存储与获取功能。

public class Utils{//保存QQ号码和登录密码到data.xml文件中    public static boolean saveUserInfo(Context context,String number,String password){    SharedPreferences sp = getSharedPreferences("data",Context.MODE_PRIVATE);    Editor edit = sp.edit();    edit.putString("userName",number);    edit.putString("pwd",password);    edit.commit();    return true;    }//从data.xml文件中获取存储的QQ号码和密码    public static Map<String,String> getUserInfo(Context context) {    SharedPreferences sp = getSharedPreferences("data",Context.MODE_PRIVATE);    String number = sp.getString("userNmae",null);    String password = sp.getString("psw",null);    Map<String,String> userMap = new HashMap<String,String>();    userMap.put("number,number);    userMap.put("password",password);    return userMap;    }}
0 0
原创粉丝点击