SharedPreferences的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息,用Sqlite数据库来存放并不划算,因为数据库连接跟操作等耗时大大影响了程序的效率。其存储位置在/data/data/<包名>/shared_prefs目录下。
存储数据信息
1)打开名为configuration的配置文件,如果存在则打开它,否则创建新的名为configuration的配置文件
SharedPreferences sharedPreferences = context.getSharedPreferences("FILE_NAME", 0);
2)让sharedPreferences处于编辑状态
SharedPreferences.Editor editor = sharedPreferences.edit();
3)存放数据
editor.putString("key","value");
4)完成提交
editor.commit();
读取数据信息
1)打开名为configuration的配置文件
SharedPreferences sharedPreferences = getSharedPreferences("FILE_NAME", 0);
2)获取数据
String name = sharedPreferences.getString("key","默认值");
以上就是Android中SharedPreferences的使用方法,其中创建的配置文件存放位置可以在Eclipse中查看:DDMS --- File Explorer --- data/data/<package name>/shared_prefs/configuration.xml
封装成Util类
package com.autumn.tools; import android.content.Context; import android.content.SharedPreferences; import android.util.Log; import com.autumn.bookandroid.MyApplication; import com.autumn.pojo.Users; /** * SharedPreferences的一个工具类,调用setParam就能保存String, Integer, Boolean, Float, Long类型的参数 * 同样调用getParam就能获取到保存在手机里面的数据 * @author xiaanming * */ public class SharedPreferencesUtils { /** * 保存在手机里面的文件名 */ private static final String FILE_NAME = "share_date"; /** * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法 * @param context * @param key * @param object */ public static void setParam(Context context , String key, Object object){ String type = object.getClass().getSimpleName(); SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); if("String".equals(type)){ editor.putString(key, (String)object); } else if("Integer".equals(type)){ editor.putInt(key, (Integer)object); } else if("Boolean".equals(type)){ editor.putBoolean(key, (Boolean)object); } else if("Float".equals(type)){ editor.putFloat(key, (Float)object); } else if("Long".equals(type)){ editor.putLong(key, (Long)object); } editor.commit(); } /** * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值 * @param context * @param key * @param defaultObject * @return */ public static Object getParam(Context context , String key, Object defaultObject){ String type = defaultObject.getClass().getSimpleName(); SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); if("String".equals(type)){ return sp.getString(key, (String)defaultObject); } else if("Integer".equals(type)){ return sp.getInt(key, (Integer)defaultObject); } else if("Boolean".equals(type)){ return sp.getBoolean(key, (Boolean)defaultObject); } else if("Float".equals(type)){ return sp.getFloat(key, (Float)defaultObject); } else if("Long".equals(type)){ return sp.getLong(key, (Long)defaultObject); } return null; } /** * 删除某个key对应的数据 * */ public static void remove(Context context ,String key){ SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.remove(key); editor.commit(); } /** * 删除全部数据 * */ public static void clear(Context context){ SharedPreferences sp = context.getSharedPreferences(FILE_NAME, Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.clear(); editor.commit(); } /*********************************本项目使用*********************************/ /** * @Description: 获取登录全局用户信息 * @Param: * @return: * @Author: qiuyu * @Date: 2018/8/13 */ public static Users getUserInfo(){ //获取登录信息 String userInfo = SharedPreferencesUtils.getParam(MyApplication.getContextObject(),"user","").toString(); if (userInfo!=null&&!userInfo.trim().isEmpty()){ JsonUtil<Users> jsonUtil1 = new JsonUtil<Users>(); Users user = jsonUtil1.jsonToObject(userInfo,Users.class); Log.i("读取个人信息成功",user.toString()); return user; }else { return null; } } }